4

HTML5 CORS ファイル アップローダーで Amazon S3 を使用しています。うまく機能していますが、まだ非常に奇妙なことが起こっています。

ファイルを送信するためのPUTリクエストの前に、ブラウザーは常にOPTIONSリクエストを送信しますが、これは403 FORBIDDENエラー コードで失敗します。

しかし、ファイルは S3 に正しく転送されているので、何が起こっているのでしょうか?

すべての HTTP メソッドを有効にして問題を解決しようとしましたが、うまくいきませんでした..

PUTリクエストに使用しているヘッダーは次のとおりです。

AWSAccessKeyId:XXXXXXXXXXXXXXXXXXXXXX
Expires:1347882643
Signature:YYYYYYYYYYYYYYYYYYYYY

そしていくつかのコードのもの:

var xhr = new XMLHttpRequest();
// bind the event listener
xhr.upload.addEventListener("progress", progress_listener, false);
// open the XMLHttpRequest 
xhr.open('PUT', signed_url, true);

// when the upload is completed call the callback function if supplied
xhr.onload = function(e) {
    if(typeof callback == "function") {
        callback(this.status == 200, file.name, file_id);
        confirm_upload_success(file_id);
    }
};

// start sending
xhr.send(file);  

ご協力いただきありがとうございます

4

1 に答える 1

4

編集:このバグは Amazon によって修正されました :-)

Carl@AWS / 2012 年 9 月 28 日午後 2 時 56 分:

全て、

このバグは現在修正されており、CORS で署名済みの URL を使用すると成功します。

ありがとう、


あなたが説明する問題はAmazonのバグです:S3は現在、CORSの「プリフライト」で行われ、失敗するOPTION呼び出しを認証していることがわかりました(おそらく、認証がOPTIONリクエストではなくPUTリクエストで署名されているため)。 .

CORS は公開データで動作しますが、署名済みの要求では動作しませ

Carl@AWS / 2012 年 9 月 5 日午後 1 時:

他の皆様、ご報告ありがとうございます。署名済みのリクエストが最初の OPTIONS リクエストでエラーを返すことは正しいです。この問題に取り組んでおり、まもなくこのサポートを追加する予定です。変更が利用可能になるタイムラインはありませんが、詳細がわかり次第、このスレッドを更新します。ご不明な点がございましたら、お気軽にお問い合わせください。

だから、それを無視して、彼らはそれを修正します。

于 2012-09-18T08:22:49.610 に答える