CORS通过Javascript访问Amazon S3

时间:2016-09-28 01:52:03

标签: javascript amazon-web-services amazon-s3 cors

我已经完成了stackoverflow中提到的所有解决方案但是我无法解决错误。我在S3中列出我的所有存储桶时收到403错误,并且在列出特定存储桶中的对象时也收到相同的错误。 / p>

我在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>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

但是没有白费。我的代码如下所示

s3=new  AWS.S3({ accessKeyId: userId ,secretAccessKey: password, sslEnabled: false, s3ForcePathStyle: true});
    function listBuckets(){
        $("#function").empty();
        $("#function").hide();
        $("#listObjectsOption").hide();
        $("#uploadFile").hide();
        s3.listBuckets(function(err,data){
      console.log(data);
    }

我使用的浏览器是Google Chrome。

任何人都可以建议。我得到的错误是

aws.js:8167 OPTIONS 
XMLHttpRequest cannot load http://s3.amazonaws.com/. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 403.

此外,我无法创建Bucket或采取任何行动。

1 个答案:

答案 0 :(得分:0)

可能与CORS无关,因为您在此处使用API​​。您使用的访问/密钥的用户可能没有必要的权限。 listBuckets需要这样的政策:

{
        "Sid": "Stmt1472023667000",
        "Effect": "Allow",
        "Action": [
            "s3:ListAllMyBuckets"
        ],
        "Resource": [
            "*"
        ]
}