在将React Router应用程序托管在AWS S3和CloudFront时出现403访问被拒绝错误。

10 浏览
0 Comments

在将React Router应用程序托管在AWS S3和CloudFront时出现403访问被拒绝错误。

当我将一个React Router应用部署到AWS S3和CloudFront,并尝试直接访问React路由时,会显示以下403错误码的错误。当经过应用程序时,我可以访问基本URL(www.sample-app.com)和路由URL(www.sample-app.com/cart)。

但是,如果我直接尝试进入一个React路由(www.sample-app.com/cart),则会产生403访问被拒绝的错误。最主要的问题是,当我尝试刷新一个React路由URL时,会出现此错误。


  AccessDenied
  Access Denied
  REQUEST_ID   
  HOST_ID

注意:我正在使用AWS负载均衡器和Lambda函数作为后端。我已经设置了AWS ALB和CloudFront来使用AWS Cognito对用户进行身份验证。

感谢您的帮助。

0
0 Comments

在使用CloudFormation创建CloudFront Distribution时,在DistributionConfig部分使用以下内容:

"DistributionConfig": {

//其他配置

"CustomErrorResponses":[

{

"ErrorCachingMinTTL" : 1,

"ErrorCode" : 403,

"ResponseCode" : 200,

"ResponsePagePath" : "/index.html"

}

]

}

谢谢提供这个片段!显然,如果你正在使用CloudFormation,这是处理这个问题的理想方式。

这应该是正确的答案。如果需要,可以使用界面中的相同字段进行配置,只需点击您的分发>错误页面并创建自定义响应。不要忘记使缓存失效以将更改传播到CDN。

0
0 Comments

在使用AWS S3和CloudFront托管React Router应用时遇到403 Access Denied错误的解决方法如下:

1. 最简单的解决方法是在CloudFront实例的"Error pages"选项卡中创建一个简单的自定义错误页面。如下图所示。这个解决方法只需要30秒,一旦自动部署就可以立即生效。

<a href="https://i.stack.imgur.com/oJWGN.png" rel="noreferrer"><img alt="CloudFront - Error pages tab. Create custom error response." src="https://i.stack.imgur.com/oJWGN.png"/></a>

2. 这篇文章提供了另一个小技巧来解决这个问题。详细内容请参考medium.com//…

0
0 Comments

在将React Router应用程序托管在AWS S3和CloudFront中时,出现403访问被拒绝错误的原因是CloudFront只能访问存储桶中存在的文件,如果请求了不存在的文件,它将返回403错误。为了解决这个问题,需要添加一个自定义错误页面,返回带有200状态码的index.html文件。这样,当返回index.html时,React Router就能正常工作。

具体解决方法可以参考以下链接:

https://www.codebyamir.com/blog/fixing-403-access-denied-errors-when-hosting-react-router-app-in-aws-s3-and-cloudfront

然而,使用Next.js构建的React应用程序仍然在存储桶中的HTML页面上抛出403错误,而且当我这样做时,无论我刷新页面,它都会加载当前页面路径的主页。

0