【问题标题】:AWS Javascript SDK issues - deleteObject working but deleteObjects doesn'tAWS Javascript SDK 问题 - deleteObject 工作但 deleteObjects 不工作
【发布时间】:2016-02-01 04:06:12
【问题描述】:

所以我开始熟悉我的 S3 存储桶的 Javascript SDK,但我陷入了这个相当令人困惑的 CORS 错误。

我的 putObject 和 deleteObject 函数工作得很好,我让我的网站使用了一个公共 IAM 用户,该用户有权在我的存储桶中删除和放入对象。

但是,我现在转到 deleteObjects 函数(允许我通过一个请求删除多个文件),我收到了这个错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许 Origin 访问。响应的 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);
        }
    });

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      相关资源
      最近更新 更多