AWS Javascript SDK问题 - deleteObject工作但deleteObjects没有

时间:2016-02-01 04:06:12

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

所以我让自己熟悉了我的S3存储桶的Javascript SDK,并且我坚持这个CORS错误,这是一个令人费解的错误。

我的putObject和deleteObject函数运行正常,我的网站使用了一个公共IAM用户,该用户有权删除并将对象放入我的存储桶中。

但是,我现在转到deleteObjects函数(允许我用一个请求删除多个文件),并且我收到此错误:

对预检请求的响应没有通过访问控制检查:否'访问控制 - 允许 - 来源'标头出现在请求的资源上。因此不允许原点访问。响应的HTTP状态代码为403。

我不明白。如果我的IAM用户有权删除和放置,它不应该给我这个CORS错误,对吧?

这是我的deleteObjects函数:

    AWS.config.update({ accessKeyId: $scope.creds.access_key, secretAccessKey: $scope.creds.secret_key });
    AWS.config.region = 'us-west-2';
    var bucket = new AWS.S3({ params: { Bucket: $scope.creds.bucket } });

    var params = {
        Bucket: $scope.creds.bucket,
        Delete: {
            Objects: [
                {
                    Key: "pic1"
                },
                {
                    Key: "pic2"
                }
            ]
        }
    }

    bucket.deleteObjects(params, function(err, data) {
        if (err) {
            console.log(err, err.stack);
        } else {
            console.log(data);
        }
    });

1 个答案:

答案 0 :(得分:0)

deleteObject操作使用DELETE http方法,但deleteObjects使用POST http方法。您需要添加:     <AllowedMethod>POST</AllowedMethod> 在你的存储桶的CORS配置中,deleteObjects可以工作。