【问题标题】:Forcing an HTTP request to fail in browser强制 HTTP 请求在浏览器中失败
【发布时间】:2014-10-20 18:44:48
【问题描述】:

是否可以使浏览器发送到服务器的http请求失败而无需更改javascript?

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

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

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

我知道设置代理服务器的选项,但想避免这种情况是可能的。

【问题讨论】:

  • 为什么不在请求进来的时候在测试服务器设置一个HTTP 500?
  • 我无权更改服务器代码。
  • 你试过像Tamper Chrome这样的chrome扩展

标签: javascript google-chrome http firefox httprequest


【解决方案1】:

在 Chrome(刚刚检查 v63)中,您实际上可以从“网络”选项卡中阻止特定 URL(甚至整个域)。您只需要右键单击该条目并选择Block request URL(或Block request domain)。

【讨论】:

  • 谢谢,很好的回答
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 您也可以在 Tools > Developer Tools 中选择 Chrome 的 Network 中的 Offline 复选框。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      只需在浏览器中输入更改后的 URL,例如格式正确的 URL,例如http://thedomain.com/welcome/ 另一个放置 "XX": http://thedomain.com/welcomeXX/ 会导致 404 错误(未找到)

      【讨论】:

        猜你喜欢
        • 2012-05-19
        • 2017-01-16
        • 1970-01-01
        • 1970-01-01
        • 2021-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多