2014-10-20 82 views
4

是否有可能使瀏覽器發送給服務器的http請求失敗,而無需更改JavaScript?強制HTTP請求在瀏覽器中失敗

我有我的網站發送到服務器的POST請求,我們試圖在請求失敗時測試我們的代碼如何反應(例如HTTP 500響應)。不幸的是,我需要對它進行測試的環境有一個簡化和壓縮的JavaScript,所以插入一個斷點或改變javascript不是一個選項。有沒有辦法讓我們利用任何瀏覽器來模擬失敗的請求?

該請求需要很長時間才能完成,因此使用瀏覽器的控制檯運行javascript命令是一種可能性。

我試過using window.stop(),但是,這不起作用,因爲我需要執行失敗代碼。

我知道設置代理服務器的選項,但想避免這種情況。

+0

爲什麼不在請求發送時在測試服務器中簡單設置HTTP 500? – lxg 2014-10-20 18:48:59

+0

我無權修改服務器代碼。 – 2014-10-20 18:50:11

+0

您是否嘗試過Chrome瀏覽器的Chrome瀏覽器擴展程序? – 2017-02-01 15:17:02

回答

1

Chrome的開發工具有一個選項,以「美化」 (即重新縮進)縮小的JavaScript(按左下方的「{}」按鈕)。這可以與「XHR斷點」選項結合在請求發出時中斷。 XHR斷點不支持通過AFAIK修改響應,但您應該能夠通過代碼找到一種方法。

3

不要忽視最簡單的解決方案:斷開您的計算機與Internet的連接,然後觸發AJAX調用。

+3

您也可以在** Tools> Developer Tools **中選擇Chrome **網絡**中的** Offline **複選框。 – Terbiy 2016-10-11 08:14:16

3

一個可能的解決方案是修改瀏覽器將使用的XMLHttpRequest對象。在JavaScript控制檯運行此代碼將使所有未來的AJAX調用頁面被重定向到一個不同的URL(這可能會給一個404錯誤):

XMLHttpRequest.prototype._old_open = 
    XMLHttpRequest.prototype._old_open || XMLHttpRequest.prototype.open; 
XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { 
    return XMLHttpRequest.prototype._old_open.call(
    this, method, 'TEST-'+url, async, user, pass); 
}; 
1

在Chrome中(剛剛選中v63),您實際上可以阻止網絡選項卡中的特定URL(甚至整個域) 。您只需要在條目上單擊鼠標右鍵,然後選擇Block request URL(或Block request domain)。