2015-10-17 24 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> 

問題解決

相關問題