2016-02-13 39 views
0

我有一個使用AJAX與服務器通信的Web應用程序。我使用的是https和SSL,並且保持活動狀態設置爲10秒。ajax應用程序中的Internet Explorer 11中的保持活動問題

有時,用戶正在向服務器發送一個請求,確切地說,當保持活動時間到期時。發生這種情況時,會創建一個新的SSL會話。這很好。 發生這種情況後,瀏覽器(Internet Explorer 11)正在重新發送AJAX請求。

但是現在發生了奇怪的事情。瀏覽器只發送請求的標題。沒有人。服務器首先等待一個永遠不會到來的物體。最後,服務器正在中止請求,客戶端會收到http狀態爲0的異常,並顯示消息:網絡錯誤。

有人說這是在使用SSL和保持活動時的正常行爲,並且這必須在webb應用程序中處理。其他人說這是在Internet Explorer 11中不正確的行爲。

我只能看到服務器不能重用在先前的SSL會話上發送的請求的主體。瀏覽器需要重新發送整個請求,但這不會發生。

如果我在應用程序中發現異常並將請求重新發送到服務器,則所有事情都會再次運行。但是,抓住所有http = 0並重新發送它們感覺很奇怪。從應用的角度來看也可能是危險的。

該應用程序只適用於IE瀏覽器,所以我不能與Chrome和FF比較。

我的問題是:這是正常的行爲還是我可能在瀏覽器或webbserver上一些不正確的配置?

+0

您所獲得的標題是否與您期望的完全相同(例如正確的Content-Length)? – Neil

+0

是的,從應用程序的角度來看(我工作的地方),我只看到http = 0和excation。網絡人員已經看到了我詳細的通訊,並告訴我,這是沒有身體的完全相同的請求。 – Megavex

回答

0

當服務器在發送保持活動連接的新請求的同時關閉連接時,則不清楚服務器是否接收到請求並對其執行操作。因此,只有被認爲是冪等的請求(即不改變服務器上的任何東西)應該由客戶端自動重試。 GET和HEAD在POST時不被認爲是冪等的。

因此,如果客戶端自動重試GET或HEAD,這將是正確的行爲。重試POST會很糟糕。重新提交請求時,如果沒有原本有機構的機構(如您聲稱但未證明)將是一個錯誤。

+0

感謝您的回覆。現在,每個請求都是POST,但我認爲我需要改變它。然後我想重新發送GET請求。我明白重新發送POST請求可能會很危險。我不明白的是,在新的SSL會話之後重新發送請求是IE11在沒有我的控制的情況下正在執行的操作。所以我必須接受,當發生這種情況時,我發送更新的POST請求,我必須中止並在瀏覽器中顯示錯誤消息。 – Megavex