reactjs - 移动到 Cloudfront + SSL 后,应用程序中的 React 路由器链接损坏

标签 reactjs amazon-s3 react-router-v4 amazon-cloudfront

我有一个 React 应用程序,使用托管在 S3 存储桶中的 React-router,并使用 Route53 作为 DNS 提供商。该应用程序在 Route53 配置指向 S3 存储桶时运行良好。

由于我想使用 SSL,因此我创建了一个指向存储桶的 Cloudfront 分配,并带有 SSL 证书,并将 DNS 指向它。这样做之后,所有链接都不起作用(example.com 有效,但 example.com/foo 不起作用)。它只是返回 NoSuchKey 错误。我知道这是不正确的,因为 key 肯定在那里,而且之前一直有效。

最佳答案

问题

  1. 与大多数网络服务器一样,如果存储桶不包含 URL 指定的对象,CloudFront/S3 将抛出 404。
  2. 如果未知/未识别的对象不可公开访问或没有正确的权限,则会自动抛出 403 错误

解决方案

当您的 Amazon S3 或自定义源向 CloudFront 返回 HTTP 4xx 或 5xx 状态代码时,您可以让 CloudFront 返回一个对象给查看器(例如 HTML 文件)。您还可以指定来自源的错误响应或自定义错误页面在 CloudFront 边缘缓存中缓存的时间。

更多资源

关于reactjs - 移动到 Cloudfront + SSL 后,应用程序中的 React 路由器链接损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190698/

相关文章:

javascript - 类型错误 : Failed to fetch in reactjs login page

javascript - React Router Link 不适用于 LeafletJS

reactjs - React Router 与可加载组件错误

javascript - 使用带有 Next JS 路由的 React 路由器

javascript - react 链接不起作用

node.js - 本地存储和 session 之间的区别

syntax - 使用哪种 ReactJS 语法; React.createClass 还是 ES6 扩展?

amazon-web-services - next.js 导出静态 - S3 - 页面重新加载时路由失败

amazon-web-services - AWS Athena : use "folder" name as partition

c# - AWS S3 如何将文件从一个存储桶移动到不同区域的另一个存储桶