是否可以在 S3 对象的 getSignedUrl 操作上设置 access-control-allow-origin? 我一直在寻找 aws 文档中的可用参数列表,但不清楚。
更新: 假设我在名为“test-bucket”的存储桶中有一个对象“test-file.jpg”。存储桶上没有设置 CORS 策略。 由 getSignedUrl 方法创建的签名 URL 在浏览器中抛出“不存在访问控制允许来源 header ”不允许的错误。
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 : *
的选项?
最佳答案
没有办法做到这一点。您需要在存储桶上配置 CORS。
有一些选项(如 ResponseContentDisposition
)会导致 S3 在使用预签名 URL 获取对象时将额外的自定义响应 header 注入(inject)到响应中。 CORS 没有这样的选项。
可以使用 CloudFront、Lambda@Edge、Origin Access Identity 和 CloudFront 预签名 URL 设计一个听起来有点复杂(但看似有效)的解决方法。 Lambda 响应触发器会将 CORS 响应 header 添加到 S3 响应中,在 CloudFront 签名 URL 验证后,OAI 会在 S3 上对其进行授权,而 Lambda 请求触发器会生成浏览器可能需要的任何飞行前响应.
关于javascript - aws javascript sdk getSignedUrl 操作上的访问控制允许来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49573154/