[英]IE continues executing JS after a 302 is received?
所以,我遇到了一個奇怪的問題,我希望有一些IE專家能夠對這種行為有所了解。 我的公司運行一個實時的Lift應用程序。 我們使用彗星模型在瀏覽器和服務器之間進行實時通信,這是Lift的標准配置。 另外值得注意的是:如果彗星與服務器不同步(由於連接問題或服務器重啟,任何會導致服務器上會話失效的事件),服務器都會使用document.location.reload();
響應該彗星請求document.location.reload();
重新加載頁面,啟動新會話,等等。
現在,為了確保注銷按預期發生,我們有一個特殊的URL(/ session / logout),可以完成所有與會話相關的清理工作,然后將您踢回我們的主頁。 這可以通過單擊該URL的錨點來觸發,或者如果您嘗試執行需要注銷的操作,服務器可能會向您發出302該URL。 很簡單吧? 在大多數瀏覽器中,這很有用,因為工作流看起來像這樣:
但是,在IE中我們看到以下行為:
document.location.reload();
從服務器,因為它們從未被IE關閉,主頁的加載被中止,並且當前頁面被重新加載而用戶沒有登錄。 這是完全不合需要的,因為我們需要加載/ session / logout的正確結果 - 特別是在用戶嘗試執行他們登錄時無法執行的操作的情況下(在這種情況下,302從注銷將指向他們最初試圖去的地方)。
以前有沒有人遇到過這種問題? 關於如何處理這個問題的任何建議?
具體而言,我對彗星一無所知,但你應該更明確地關閉彗星。
我建議捕獲window.onbeforeunload事件並明確關閉彗星,而不是依靠瀏覽器為您完成此工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.