javascript - aws javascript sdk getSignedUrl 操作上的访问控制允许来源?

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

是否可以在 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/

相关文章:

amazon-web-services - AWS CLI 仅列出授权存储桶

python - Django-compressor/django-storages 链接被错误缓存;即将到期

javascript - 传递 javascript 函数内包含空格的 URL

javascript - Backbone : fetch and scope

javascript - 使用获取流的可恢复下载器

typescript - 在 APIGatewayProxyEvent 中,哪个字段会给我 URL?

javascript - 使用单个正则表达式验证主机名和 IP 地址

amazon-web-services - 用于 Lambda 无服务器架构的 AWS DynamoDB 与 RDS

javascript - 如何将文件从 AWS S3 下载到客户端设备?

apache-spark - 如何阻止 Spark 结构化流每次列出 S3 存储桶中的所有文件