我正在尝试通过过期的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和call方法getSignedUrl('getObject', params)生成签名的url时,它会返回不同的主机url:https://<bucket>.s3.amazonaws.com/从此方法访问过期的资源不会被重定向到403.html.我猜测,由于主机地址不同,这就是它不会自动重定向的原因.
我还为条件设置了静态网站路由规则
<Condition>
<HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<ReplaceKeyWith>403.html</ReplaceKeyWith>
</Redirect>
Run Code Online (Sandbox Code Playgroud)
仍然没有重定向签名的网址.所以我不知道如何优雅地处理这些过期的网址.任何帮助将不胜感激.
amazon-s3 amazon-web-services http-status-code-403 pre-signed-url