【发布时间】:2017-07-18 15:31:16
【问题描述】:
所以我有一个目前通过 Amazon s3 提供服务的 React/Redux 应用程序。我们已将 s3 配置为在 4xx 错误时呈现 index.html 页面并提供我们的 bundle.js。这允许反应路由器被引导并从那里接管。直到最近,这都没有问题。现在,当我尝试访问 IE 或 Edge 中的页面时,我得到了 IE 或 Edge 404 页面。
如果我关闭 IE 浏览器上的“显示友好的 HTTP 错误消息”选项,一切正常。根据我所做的研究,这是我对正在发生的事情的理论:
当客户端点击请求的路由时,react 路由器还没有被引导。这导致 404 必须通过渲染 /index.html 页面来挽救。当返回 404 时,IE/Edge 会介入并呈现它们自己的 404 页面,从而阻止 index.html 被呈现。
我对如何在不实际使用完整后端的情况下解决此问题感到不知所措。我可以在 s3 设置中配置重定向,用 index.html 替换根 url,但这会破坏主路由的所有子路由。有没有办法配置应用程序,使其可以在所有主要浏览器上运行而无需实际实现实际后端?
编辑:所以我发现这篇文章展示了如何使用 cloudfront 通过在自定义错误上呈现索引来解决这个问题:https://medium.com/@omgwtfmarc/deploying-create-react-app-to-s3-or-cloudfront-48dae4ce0af。有谁知道这是否可以使用云耀斑?我个人实际上没有访问 cloudflare 的权限,所以我不确定可能性。
【问题讨论】:
标签: reactjs internet-explorer amazon-s3 react-router microsoft-edge