开发者问题收集

来自 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 控制台中的一个简单配置添加。效果非常好!

https://docs.aws.amazon.com/amplify/latest/userguide/redirects.html#redirects-for-single-page-web-apps-spa

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