来自 AWS Amplify 上托管的 React 应用程序的受保护路由的访问被拒绝错误
2020-08-23
6586
我已在 AWS Amplify 上托管了我的 React 应用程序。在尝试访问应用程序的受保护路由时,屏幕上出现以下错误 此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>3C8377104116CA48</RequestId>
<HostId>nL3bDs+kXEWE8uBFPTLkFLpRg6CCmKfejftWs5wmTWYO6K6WDzpwsDXJCFTK0EFhjJdaHECfuos=</HostId>
</Error>
如何解决此问题?
3个回答
我自己在 AWS 论坛上找到了一个解决方案,其中一位用户非常友好地分享了他从 AWS 支持获得的解决方案。我猜 AWS 不想让全世界知道它所创造的问题的解决方案,以便销售支持包。无论如何,这里是解决方案:
在 AWS Amplify 控制台的“重写和重定向”部分中添加此记录
Source Address: </^((?!\.(css|gif|ico|jpg|js|png|txt|svg|woff|ttf)$).)*$/>
Target: /index.html
Type: 200 (Rewrite)
就是这样。它神奇地得到了解决。我不知道为什么要这样做,也不知道一开始出了什么问题,但采取这个行动可以解决问题。
Vinit Khandelwal
2020-08-24
Vinit Khandelwal 的答案是正确的,但如果有人正在寻找有关此问题的文档,请点击此处。这是 Amplify 控制台中的一个简单配置添加。效果非常好!
jayseven525
2022-01-20
当您通过 Amplify 控制台创建项目时,它会自动创建重写规则。当您从 CLI 创建项目时,它不会创建重写规则。
您可以将 Amplify 在从控制台创建的项目上使用的重写规则复制到项目的重写规则中。
我已将重写规则包含在下方。
[
{
"source": "/<*>",
"target": "/index.html",
"status": "404-200",
"condition": null
},
{
"source": "</^[^.]+$|\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>",
"target": "/index.html",
"status": "200",
"condition": null
}
]
Thomas Steven
2021-01-22