2015-10-17 23 views
0

我一直在使用rackt/react-router处理React JS应用程序,并且最近发现了一个特定于IE9的奇怪行为。协议重定向错误地将React JS应用程序路由到IE9中的默认页面

语境:
我们有F5设置为执行协议重定向(302),这样,如果有人试图导航到http://react.site.root/#/virtual.page将其重定向到https://react.site.root/#/virtual.page。由于这是一个单页面应用程序,重定向实际上发生在http://react.site.root/。此重定向发生在Keep-Alive请求的结果中。

问题:
在IE9中,当发生此协议重定向时,用户最终会在https://react.site.root/#/default.route而不管他们尝试点击的虚拟页面。在IE,Chrome(桌面或Android),iPhone 5s或6(没有真实设备来测试其他)的更高版本中没有看到此问题。有趣的是,它也发生在BrowserStack中使用任何iPhone版本时。

我的研究:
我也用计算器和谷歌唯一的半相关的问题是,我发现IE9缓存重定向,但搜索从我的理解,只有适用于301个重定向,并且由于协议重定向路径不不包括似乎不适合的cookie中的虚拟页面或任何路由数据。尽管如此,我发现这个测试需要删除浏览器历史记录并在InPrivate浏览下运行一个标签,表明这不是问题。我还在Fiddler中记录了请求和重定向响应,以供工作的浏览器和IE9使用,并且没有任何疑问。

似乎IE9将重定向页面视为新页面,原因可能是原始JavaScript上下文在重定向上被破坏,这将解释为什么反应使用默认路由。不幸的是,我不知道如何测试这个理论,或者一般地解决这个问题。任何帮助是极大的赞赏。

回答

0

把这个在你<head>的顶部:

<script> 
    window.location.hash = window.location.hash 
</script> 

问题解决

相关问题