2

jquery を使用して S3 にファイルを直接アップロードしようとしています。

この手順に従って、次のように CORS 設定ファイルを構成してテストしました。

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

次に、私のjqueryコード:

$.ajax({
url: this.action,
type: 'POST',
dataType: 'xml',
data: $('form').serialize(),
crossDomain: true,
cache: false,
success: function(data) {
    window.alert('test');
    }
});

ajaxなしでフォームを直接投稿するとうまくいきます...しかし、アップロードが完了した直後にメソッドを呼び出したいので、jqueryを使ってこの仕事をしています。しかし、CORS 設定をセットアップした後でも、エラーが発生します: Origin xxxx is not allowed by Access-Control-Allow-Origin.

リクエストヘッダー:

Accept:application/xml, text/xml, */*; q=0.01
Cache-Control:no-cache
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Origin:http://localhost:8000
Pragma:no-cache
Referer:http://localhost:8000/upload
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17

リクエストのステータスは CANCELED で、タイプは PENDING です。

4

1 に答える 1

0

元のフォームが実際にバケット所有者によって作成されたことを証明する POLICY_JSON とそれぞれの署名がありません。詳細については、次のリンクを確認してください。

http://aws.amazon.com/articles/1434/

于 2013-09-26T13:09:51.573 に答える