AWS Javascript 开发工具包问题 - deleteObject 有效,但 deleteObject 不起作用

AWS Javascript SDK issues - deleteObject working but deleteObjects doesn't

本文关键字:deleteObject 有效 不起作用 问题 Javascript 开发 开发工具 工具包 AWS      更新时间:2023-09-26

所以我熟悉了我的 S3 存储桶的 Javascript SDK,但我被困在这个相当令人困惑的 CORS 错误上。

我的 putObject 和 deleteObject 函数工作正常,我让我的站点使用具有删除和放置对象权限的公有 IAM 用户。

但是,我现在正在转向 deleteObjects 函数(允许我通过一个请求删除多个文件),并且出现此错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在"访问控制允许源"标头。因此,不允许访问原产地。响应具有 HTTP 状态代码 403。

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

这是我的删除对象函数:

    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);
        }
    });

deleteObject 操作使用 DELETE http 方法,但 deleteObjects 使用 POST http 方法。您需要添加: <AllowedMethod>POST</AllowedMethod>到存储桶的 CORS 配置,以便删除对象正常工作。