从 AWS Amplify 上托管的 React 应用程序的受保护路由访问拒绝错误

IT技术 reactjs amazon-web-services aws-amplify
2021-05-17 17:22:26

我在 AWS Amplify 上托管了我的 React 应用程序。在尝试访问应用程序的受保护路由时,我在屏幕上收到以下错误 此 XML 文件似乎没有任何与其关联的样式信息。文档树如下所示。

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>3C8377104116CA48</RequestId>
<HostId>nL3bDs+kXEWE8uBFPTLkFLpRg6CCmKfejftWs5wmTWYO6K6WDzpwsDXJCFTK0EFhjJdaHECfuos=</HostId>
</Error>

在浏览器上看到的错误

我该如何解决?

2个回答

我自己从 AWS 论坛中找到了一个解决方案,用户很乐意分享他从 AWS 支持中获得的解决方案。我猜 AWS 不想让全世界知道它所造成的问题的解决方案,以便出售支持包。无论如何,这是解决方案:

在“重写和重定向”部分的 AWS Amplify 控制台中添加此记录

Source Address: </^((?!\.(css|gif|ico|jpg|js|png|txt|svg|woff|ttf)$).)*$/>
Target: /index.html
Type: 200 (Rewrite)

这就对了。它神奇地得到解决。我不知道为什么必须这样做或首先出了什么问题,但采取此行动可以解决问题。

当您通过 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
    }
]