HttpWatch的Result中出現Aborted的緣由分析[配圖]

咱們在使用HttpWatch進行Web調試的過程當中有時候會看到非HTTP Status Code(狀態碼)的值,例如:(Aborted)。 ajax

  

  (Aborted)是HttpWatch中定義的三種非HTTP Status Code的其中一種,這些狀態信息在HttpWatch中被用來表示服務器沒有對發出的請求返回任何Status Code: 瀏覽器

  • l (Aborted)
  • l (Cache)
  • l ERROR_*

  最後的兩個值所表示的含義是顯而易見的。(Cache)用來表示請求中所返回的內容不是從服務器中取回的而是直接從瀏覽器的緩存中取回的。所以若是沒有與服務器進行真實的信息交換則服務器不會返回Status Code。另一種是ERROR_*,它用來表示當IE瀏覽器請求數據時發生錯誤致使請求失敗。 緩存

  (Aborted)表示的內容相對上面兩個要更加複雜一些,它發生在IE開始處理對指定URL的請求,但請求被停止的情形下。如下是幾種請求被停止的典型示例: 服務器

  1. 在頁面加載的過程當中(例如:正在下載一個圖片)用戶點擊了頁面中的一個連接,或點擊了瀏覽器的「中止」按鈕。這種狀況下IE會停止全部激活狀態的請求,HttpWatch中這些被停止請求的result會顯示(Aborted)。
  2. 當用戶觸發了某個元素的hover事件(hover時會發請求),而在請求的過程當中鼠標移出了hover事件綁定的區域時。此時對於還未完成的請求會被IE強制丟棄。
  3. 有時候開發者會利用ajax去請求數據,可是卻沒有等待服務器返回數據而是繼續進行其它處理時,那些本來應該接收的請求會被IE瀏覽器強制丟棄。

  其實上述問題的核心就是「服務器所接收的請求是否會被(強行)停止?」,這個問題的答案取決於請求什麼時候會被丟棄。經過查看Httpwatch的timing chart能夠清楚的看到請求被取消的時機。 網站

下面就是一個請求在鏈接過程當中被停止的例子: spa

  

  上面的例子中因爲請求尚未到達Send階段所以服務器不會接收到客戶端所發出的請求 pwa

  下面的這個被Aborted情形出如今IE瀏覽器在等待服務器返回請求結果的過程當中 調試

  

  HttpWatch中之因此會定義上述三種信息主要是爲了反映出用戶與網站見交互的一些信息(非Status Code),而不是表示請求發生了錯誤 事件

相關文章
相關標籤/搜索