【发布时间】:2016-01-11 12:18:28
【问题描述】:
在通过过期 URL 访问 S3 资源时,我试图优雅地处理 403。目前它返回一个 amz xml 错误页面。我已经上传了一个 403.html 资源,并认为我可以重定向到那个。
存储桶资源是我的应用保存/获取的资产。尽管如此,阅读文档我设置存储桶属性以将存储桶作为静态网页页面处理,并将 403.html 上传到存储桶根目录。除对资源 403.html 的公共 GET 访问外,所有公共权限均被阻止。在存储桶属性、网站设置中,我将 403.html 指示为错误页面。访问http://<bucket>.s3-website-us-east-1.amazonaws.com/some-asset.html 会正确重定向到http://<bucket>.s3-website-us-east-1.amazonaws.com/403.html
但是,当我使用 aws-sdk js/node 并调用方法 getSignedUrl('getObject', params) 生成签名的 url 时,它返回不同的主机 url:https://<bucket>.s3.amazonaws.com/ 从该方法访问过期资源不会重定向到 403.html .我猜测由于主机地址不同,这就是它不会自动重定向的原因。
我还为条件设置了静态网站路由规则
<Condition>
<HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>403.html</ReplaceKeyWith>
</Redirect>
仍然没有重定向签名的网址。所以我不知道如何优雅地处理这些过期的网址。任何帮助将不胜感激。
【问题讨论】:
标签: amazon-web-services amazon-s3 http-status-code-403 pre-signed-url