在浏览器中强制使HTTP请求失败

29

是否可以在不更改JavaScript的情况下使浏览器发送到服务器的HTTP请求失败?

我的网站向服务器发送一个POST请求,我们正在尝试测试当请求失败时(例如HTTP 500响应)我们的代码的反应。不幸的是,我需要测试它的环境已经对JavaScript进行了混淆和压缩,因此插入断点或更改JavaScript不是一个选项。有没有办法利用任何浏览器模拟失败的请求?

请求需要很长时间才能完成,因此使用浏览器的控制台运行JavaScript命令是可能的。

我尝试过使用window.stop() ,但这不起作用,因为我需要执行失败代码。

我知道设置代理服务器是一种选择,但如果可能的话,希望避免此选项。


1
为什么不在测试服务器上设置HTTP 500,当请求到达时呢? - lxg
1
我没有修改服务器代码的权限。 - Peter Maidens
你尝试过像 Tamper Chrome 这样的 Chrome 扩展吗? - Aimee Borda
6个回答

67

在Chrome中(仅检查了v63),您可以通过网络选项卡实际上阻止特定的URL(甚至整个域名)。您只需要右键单击该条目,并选择 阻止请求URL (或 阻止请求域 )。


谢谢,回答很好。 - Mohamed Elsayed

6

一个可能的解决方案是修改浏览器将使用的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);
};

6
不要忽视最简单的解决方案:将您的计算机与互联网断开连接,然后触发AJAX调用。

12
你也可以在Chrome的"工具 > 开发者工具 > 网络"中选择"离线"复选框来实现这一点。 - Terbiy

3
要阻止特定URL并使API调用失败,您只需要按照以下步骤操作:
  1. 在浏览器中进入“网络”选项卡。
  2. 找到需要失败的API调用(根据您的要求)。
  3. 右键单击该API调用并选择 enter image description here
  4. 点击“阻止请求URL”,您也可以通过相同的方式取消阻止,因为该选项将变为“取消阻止” enter image description here

1
Chrome的开发者工具有一个“美化”选项(即重新缩进)压缩的JavaScript(在左下角按“{}”按钮)。这可以与“XHR断点”选项结合使用,以在进行请求时中断。据我所知,XHR断点不支持修改响应,但您应该能够通过代码找到一种方法来实现它。

-6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接