1

是否可以在 S3 对象的 getSignedUrl 操作上设置 access-control-allow-origin?我一直在寻找 aws 文档中可用参数的列表,但目前还不清楚。

更新:假设我在名为“test-bucket”的存储桶中有一个对象“test-file.jpg”。存储桶上没有设置 CORS 策略。由 getSignedUrl 方法创建的签名 URL 在浏览器中引发“没有访问控制允许来源标头存在”不允许错误。

var s3 = new aws.S3({'signatureVersion': 'v4'});
var options = {
    Bucket:"test-bucket",
    Key:"test-file.jpg",
    Expires:120
}
var signedUrl = s3.getSignedUrl('getObject', options);

access-control-allow-origin : *在上述函数调用中是否有设置选项?

4

1 回答 1

2

没有办法做到这一点。您需要在存储桶上配置 CORS。

有一些选项,比如ResponseContentDisposition当使用预签名 URL 获取对象时,S3 会在响应中注入额外的自定义响应标头。CORS 没有这样的选项。

可以使用 CloudFront、Lambda@Edge、源访问身份和 CloudFront 预签名 URL 设计一个听起来有些复杂(但看似有效)的解决方法。Lambda 响应触发器会将 CORS 响应标头添加到 S3 响应中,在通过 CloudFront 签名 URL 验证后,该响应将在 S3 由 OAI 授权,并且 Lambda 请求触发器将生成浏览器可能需要的任何飞行前响应.

于 2018-03-31T19:46:33.977 回答