访问控制允许来源于aws javascript sdk getSignedUrl操作?

时间:2018-03-30 10:59:12

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

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

更新: 假设我在名为“test-bucket”的存储桶中有一个对象“test-file.jpg”。存储桶上没有设置CORS策略。 getSignedUrl方法创建的签名URL会在浏览器中抛出“no access-control-allow-origin header present”错误。

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 : *

1 个答案:

答案 0 :(得分:2)

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

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

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