2015-09-05 133 views
1

我的cognitoIdentityPool代碼爲我的憑據,並在瀏覽器中使用amazon aws javascript。除了createBucket之外,我可以在瀏覽器中使用JavaScript進行所有操作。我在html中的js代碼看起來像;所有的s3 javascript創建桶

var s3 = new AWS.S3(); 
var params = { 
    Bucket: 'myuniquebucketname', 
    ACL: 'private', 
    CreateBucketConfiguration: { 
    LocationConstraint: 'us-east-1' 
    }, 
    GrantFullControl: 'STRING_VALUE', 
    GrantRead: 'STRING_VALUE', 
    GrantReadACP: 'STRING_VALUE', 
    GrantWrite: 'STRING_VALUE', 
    GrantWriteACP: 'STRING_VALUE' 
}; 
s3.createBucket(params, function(err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  console.log(data);   // successful response 
}); 

首先,如果我充分的控制,我能寫STRING_VALUE在GrantFullControl: 'STRING_VALUE', 順便說一句,它不是必要成立GrantRead,GrantWrite或工作腳本了其他補助線。它給出了交叉來源的CORS錯誤。但是,我可以清除桶,清除上傳文件到桶等,沒有CORS錯誤。請任何想法。

+0

我不知道你可以用JS做到這一點,你能告訴我在哪裏可以找到在S3上使用JS的教程嗎? – zer00ne

回答

-1

我相信這是預期的行爲。假設您的頁面來自mybucket.s3.amazonaws.com,然後通過putObject上傳文件會導致對mybucket.s3.amazonaws.com(同一個域)的HTTP請求,因此可以,但調用createBucket的目標是s3.amazonaws .com(一個不同的域),因此會導致CORS錯誤。同樣,如果您調用listBuckets,則出於同樣的原因它將失敗並顯示CORS錯誤。

+0

相同的域名,不同的域名或localhost.local域名無關緊要。我可以把文件,刪除桶等從每個域。只是「createBucket」我不能從任何域。我的CORS配置沒問題。 –

+0

@kaya_如果發出listBuckets會發生什麼? – jarmod

+0

是的,當我調用listBuckets時,它會因CORS錯誤而失敗。但是在sdk中有listBuckets屬性; http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listBuckets-property 爲什麼? –