非表示の iframe (つまり、IE 9、8) 内でクロス ドメイン (CORS) を送信するための FineUploader に問題があります。クロスドメイン アップロード リクエストごとに、画像は正常にアップロードされますが、エラー メッセージが表示され、IE バガーは次のように述べています。
No valid message received from loaded iframe for file id 1
詳細については、彼らのブログで次のように述べています。
すべてのクロスドメイン iframe 開始応答は、上記のスクリプト タグで終了する必要があり、有効な JSON 部分には、関連付けられたファイルの UUID が含まれている必要があります。アクセス可能なサーバーで iframe.xss.response.js ファイルをホストし、それに応じてタグで参照する必要があることに注意してください。レスポンスのコンテンツが Fine Uploader によって追跡される iframe に返されると、上記の script タグによってインポートされた関連する JavaScript ファイルが実行され、window.postMessage を介してレスポンスの JSON 部分がアップローダに渡されます。
わかりましたので、これを次のように実装します。
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH'])
|| (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']!="XMLHttpRequest")){{
header("Content-Type: text/html");
$result['uuid'] = $uploader->gen_uuid();
echo json_encode($result);
echo "<script src='http://example.com/js/iframe.xss.response-3.3.0.js'></script>";
}
現在、Fiddler によると、応答は次のようになっています。
HTTP/1.1 200 OK
Date: Sun, 17 Mar 2013 03:26:49 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=VJ3AgTRnMtjAqbxizfXBN3; path=/
Vary: Accept-Encoding
Content-Length: 203
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/html
{"success":true,"uploadName":"_73d05d51b4ab624e3260ef0b289a60bc_NMS_0785.JPG","uuid":"749174c7-e29c-485f-9f6d-cc18d4b5d0fd"}<script src='http://example.com/js/iframe.xss.response-3.3.0.js'></script>
そして、IEデバッガーは次のように言います:
[FineUploader] Processing 1 files or inputs...
[FineUploader] Sending upload request for 1
[FineUploader] Received iframe load event for CORS upload request (file id 1)
[FineUploader] Received the following window message: '{"success":true,"uploadName":"_73d05d51b4ab624e3260ef0b289a60bc_NMS_0785.JPG","uuid":"749174c7-e29c-485f-9f6d-cc18d4b5d0fd"}'
[FineUploader] Received the following window message: '{"success":true,"uploadName":"_73d05d51b4ab624e3260ef0b289a60bc_NMS_0785.JPG","uuid":"749174c7-e29c-485f-9f6d-cc18d4b5d0fd"}'
[FineUploader] No valid message received from loaded iframe for file id 1
[FineUploader] iframe loaded
何がうまくいかないのか誰にもわかりませんか?