2014-10-20 120 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)。