2013-05-01 47 views
27

SCRIPT7002: XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3IE10/IE11中止後Ajax請求清除緩存錯誤「網絡錯誤0x2ef3」

目前沒有有效的解決方案後。

Update: Noticed on IE11 also.

後越來越多的調查,我帶着這樣的結果:

  1. 的問題是具體到我的應用程序,它不會發生在Facebook上。
  2. 這個問題與每個主機的最大請求數量無關(我做過氾濫服務器的示例頁面,IE10能夠同時處理高達8-10個請求,在我的應用程序內部我也嘗試過ajax連續請求,也失敗了)。
  3. 該問題特定於POST請求。
  4. 該問題不是特定於所使用的JS庫(我試圖從控制檯直接XMLHttpRequest它也失敗了)。
  5. 失敗發生在xhr.send(),xhr.readyState = 4和xhr.onreadystatechange觸發後。
  6. 失敗與任何內容類型,正確的請求或服務器配置無關。它只是客戶端,請求虛擬頁面將失敗,只有最低XHR,只有xhr.open和xhr.send。
  7. 它主要發生在清除瀏覽器緩存後。
  8. 在POST之前執行GET請求並不能解決此問題。

我的問題是:

  1. 如何瀏覽器的緩存可能會影響POST的Ajax請求?
  2. 是否有任何機構與IE開發者聯繫,告訴我們這個錯誤'Network Error 0x2ef3'映射到了什麼?

現在,我所做的臨時解決方案僅僅是在HTTP狀態碼爲零時重試最多3次。但它非常醜陋,因爲即使上傳請求有時也失敗了,對於那些重試的請求來說速度變慢,有時會需要額外的100ms。

重現步驟:

  1. 確保小提琴手或代理被禁用。
  2. http://ie10.laiths.name/#!login
  3. 打開IE10控制檯,刪除您的瀏覽器緩存。
  4. 試試這個無效的登錄:[email protected]/random
  5. 後的3-4倍(清除緩存/無效的登錄),你會看到這樣的錯誤:SCRIPT7002:XMLHttpRequest的:網絡錯誤0x2ef3,無法完成由於錯誤00002ef3的操作。

我的IE版本:

  • Win7的IE10版本:10.0.9200。16618
  • 更新版本:10.0.6(KB2838727)

現在我通過重試解決它的3倍最高如果browser is IE10 & & Request is POST & & HTTP status code is 0

如果有人可以幫助我刪除我的醜陋解決方案,我將不勝感激,因爲即使請求發送到服務器並返回0,我也會重試(我試圖通過測量時間來避免這種情況在xhr.send和它的回調之間但它不可靠),那麼如果IE10在comptMode中,那麼如果IE11有同樣的問題,那麼增加性能,它會在我的機器上每次重試之間約170ms。

+0

我無法在IE10中重現此操作。嘗試了10次。 – 2013-06-16 17:08:12

+0

我正在添加自動重試,您是否嘗試在每次嘗試之前清除緩存?你使用開發人員工具欄刪除緩存按鈕? – 2013-06-16 18:24:29

+0

是的,我通過點擊緩存(在開發人員工具中) - >清除瀏覽器緩存... – 2013-06-16 19:09:15

回答

10

由於安全證書問題,可能會發生這種情況。如果清除緩存,則會丟失部分(如果不是全部)證書信息。

你可以找到http://www.jonnyreeves.co.uk/2013/making-xhr-request-to-https-domains-with-winjs/

的更多信息(和解決方法),基本上它說你必須以更新的證書信息的POST請求之前做一個GET。

+1

謝謝,實際上我之前看到過這個URL,但我並不相信這個想法,但是我會試一試。順便說一句,我*不*使用HTTPS – 2013-05-30 06:58:53

+0

你使用什麼服務器? – 2013-05-30 11:19:12

+1

我正在使用Apache,但它純粹是客戶端,請求沒有通過電話線,它甚至沒有超出瀏覽器本身。 – 2013-05-30 14:32:30

1

我有這個問題,那返回一些JSON會失敗的AJAX Post請求,最終返回中止,用:在控制檯

SCRIPT7002: XMLHttpRequest: Network Error 0x2ef3

錯誤。在其他瀏覽器(Chrome,Firefox,Safari)上,完全相同的AJAX請求沒有問題。

進一步的調查顯示,響應缺少狀態碼 - 在這種情況下,應該有500個內部錯誤。

這是作爲使用服務棧的C#Web應用程序的一部分生成的,需要明確設置錯誤代碼。

IE似乎將連接斷開,最終網絡層將其關閉,並「中止」請求;儘管收到內容和其他標題。

更新Web應用程序以正確返回狀態碼解決了問題。

也許有一個IE瀏覽器如何處理文章中的標題問題。

希望這可以幫助別人!

+0

你有這個解決方案嗎? – Mousey 2015-09-22 01:15:06

+1

修復來自Web應用程序的響應修復了它。 – 2015-09-22 01:20:40