2013-03-15 19 views
5

私は、ファイルをアップロードするためのAPIエンドポイントであるサブドメインを持っているということです。私は(メインのWWWドメインから)このサブドメインにjQueryを使って何かをアップロードしようとしているときしかし、私はエラークロスドメインjQuery AJAXファイルのアップロード

のXMLHttpRequestがhttp://1.storage.site.net/uploadをロードすることはできません取得しています。 Origin http://www.site.netは、Access-Control-Allow-Originによって許可されていません。私もちょうど

<?php 

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); 
header('Access-Control-Max-Age: 1000'); 
header('Content-type: application/json'); 
header('Access-Control-Allow-Headers: *'); 

echo json_encode(['lulz' => 123]); 

で二つの単語を使用してファイルをスタブにし、ファイルを送信しようとした、ソースコードにnginxのでは、ヘッダー、ヘッダー:

は、私はすべてを試み何も動作します。

しかし、小さなファイル(〜1MB)が正しくアップロードされ、ファイルが少し大きくなった(たとえば5MB)ことに気付きました - NOT(原点は許可されません)。

解決方法はありますか?

+0

小さなファイルが機能するのは奇妙です。私は[同じ起源の政策](http://en.wikipedia.org/wiki/Same_origin_policy)に違反しているので、何もすることは一切期待していません。 –

+1

@Mikeだから、彼は 'Access-Control- * 'ヘッダを送信しているのです。彼らはブラウザに「ポリシー違反だとわかっているが、クールだ。 http://en.wikipedia.org/wiki/Same_origin_policy#Cross-Origin_Resource_Sharing –

答えて

2

5MBファイルがApacheのmax_request_body設定(または名前が何であっても)には大きすぎるため、PHPスクリプトが実行されないため、これらのヘッダーを送信することはありません。誤解を招くクロスを生成しますドメインエラー。

この仮定が当てはまる場合は、ブラウザの「ネット」タブで詳細を確認する必要があります。アップロードスクリプトは何らかのエラー状態を返す必要があります。

デバッグするには、通常のフォームベースのファイルアップロードを行い、テストし、動作するまで調整します。

+1

はい、ブラウザは413エラーを正しく表示できません。私はAJAXではなく、直接(HTML形式で)ファイルをアップロードしようとしたとき、私は412 htmlエラーを受け取りました。それは約nginx client_max_body_size設定でした。 –

+0

これが答えだったら、それをチェックしてください。 –

関連する問題