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

Pet*_*ens 13 javascript firefox google-chrome http httprequest

是否有可能使浏览器发送到服务器的http请求失败而不必更改javascript?

我有一个POST请求,我的网站正在发送到服务器,我们正在尝试测试我们的代码在请求失败时的反应(例如HTTP 500响应).不幸的是,我需要对其进行测试的环境具有uglified和压缩的javascript,因此插入断点或更改javascript不是一种选择.有没有办法让我们利用任何浏览器来模拟失败的请求?

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

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

我知道设置代理服务器的选项,但希望避免这种情况.

小智 19

在Chrome中(刚刚检查过v63),您实际上可以从"网络"标签中阻止特定的网址(甚至是整个网域).您只需右键单击该条目并选择Block request URL(或Block request domain.)


Mac*_*cil 5

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

  • 您还可以在 **工具 > 开发人员工具** 中选择 Chrome 的 **网络** 中的 **离线** 复选框。 (12认同)

Mac*_*cil 5

一种可能的解决方案是修改将由浏览器使用的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);
};
Run Code Online (Sandbox Code Playgroud)