aws javascript sdk getSignedUrl 操作上的访问控制允许来源?
Access-control-allow-origin on aws javascript sdk getSignedUrl operation?
是否可以在 S3 对象的 getSignedUrl 操作上设置 access-control-allow-origin?
我一直在 aws 文档中寻找可用参数列表,但不清楚。
更新:
假设我在名为 "test-bucket" 的存储桶中有一个对象 "test-file.jpg"。存储桶上没有设置 CORS 策略。
由 getSignedUrl 方法创建的签名 URL 在浏览器中抛出 'no access-control-allow-origin header present' not allowed 错误。
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
,当 pre-signed URL 用于获取object。 CORS 没有这样的选项。
可以使用 CloudFront、Lambda@Edge、Origin Access Identity 和 CloudFront pre-signed URLs 设计一个有点 complex-sounding(但看似有效)的解决方法。 Lambda 响应触发器会将 CORS 响应 headers 添加到 S3 响应,该响应在 CloudFront 签名 URL 验证后已在 S3 上由 OAI 授权,并且 Lambda 请求触发器会生成任何pre-flight 浏览器可能需要的响应。
是否可以在 S3 对象的 getSignedUrl 操作上设置 access-control-allow-origin? 我一直在 aws 文档中寻找可用参数列表,但不清楚。
更新: 假设我在名为 "test-bucket" 的存储桶中有一个对象 "test-file.jpg"。存储桶上没有设置 CORS 策略。 由 getSignedUrl 方法创建的签名 URL 在浏览器中抛出 'no access-control-allow-origin header present' not allowed 错误。
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
,当 pre-signed URL 用于获取object。 CORS 没有这样的选项。
可以使用 CloudFront、Lambda@Edge、Origin Access Identity 和 CloudFront pre-signed URLs 设计一个有点 complex-sounding(但看似有效)的解决方法。 Lambda 响应触发器会将 CORS 响应 headers 添加到 S3 响应,该响应在 CloudFront 签名 URL 验证后已在 S3 上由 OAI 授权,并且 Lambda 请求触发器会生成任何pre-flight 浏览器可能需要的响应。