0

非表示の 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 

何がうまくいかないのか誰にもわかりませんか?

4

1 に答える 1

0

リクエストを見て、POST リクエストとともに送信されたファイルの UUID が応答の UUID と一致することを確認しましたか? ほとんどの場合、応答で送信している UUID が間違っています。

于 2013-04-30T14:25:39.493 に答える