所以我让自己熟悉了我的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);
}
});
答案 0 :(得分:0)
deleteObject操作使用DELETE http方法,但deleteObjects使用POST http方法。您需要添加:
<AllowedMethod>POST</AllowedMethod>
在你的存储桶的CORS配置中,deleteObjects可以工作。