我已将 React 应用程序上传到 AWS S3 并使用静态网站托管。然后我将一个 cloudfront 发行版链接到 s3 存储桶。
我能够导航到该站点并且它正常运行,除非我导航到一个新页面 my-domain/new-page。起初它成功了,但如果我尝试直接加载页面或刷新,我会收到 403 禁止错误。
我已将 React 应用程序上传到 AWS S3 并使用静态网站托管。然后我将一个 cloudfront 发行版链接到 s3 存储桶。
我能够导航到该站点并且它正常运行,除非我导航到一个新页面 my-domain/new-page。起初它成功了,但如果我尝试直接加载页面或刷新,我会收到 403 禁止错误。
我注意到当您更改对象并立即查找对象时会发生这种情况。为了解决这个问题,我们曾经将对象缓存 5 分钟,因此 CloudFront 将在可用时提供缓存版本。
如果您正在更改对象并将 ACL 与对象一起应用,这也相关。确保您将公共读取作为存储桶的策略,以便减少中断时间。
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/*"]
}
]
}
在 CloudFront 中启用缓存也解决了这个问题。
希望能帮助到你。