【问题标题】:Check if a website is making X http request with javascript检查网站是否正在使用 javascript 发出 X http 请求
【发布时间】:2012-02-04 16:58:36
【问题描述】:

我已经搜索了一段时间,但我只能找到有关如何实际提出这些请求的示例......

我要做的是在我单击 X 站点的按钮后检查网站是否正在发出 http 请求

例如。 http://test.s3.amazonaws.com/test/1.txt

我猜有一种方法可以获取所有传出请求,然后过滤列表,但我什至无法获取请求

到目前为止,我所做的只是插入事件侦听器以检查是否已单击 X 按钮,然后我想检查这些请求。

<script language="javascript">
document.getElementById("button").addEventListener('click', buttonClicked, true);

function buttonClicked(){
    -->Check requests made after button is clicked.<--
}
</script>

【问题讨论】:

  • 您听说过 FireBug 吗?它是检查 HTML/JS/网络内容的好工具。您可以简单地跟踪页面是否将 HTTP 请求发送到任何地方! getfirebug.com/network
  • 不明白Check requests made after button is clicked. 的意思。你想获取文件吗?
  • 现在你甚至不需要 Firebug。所有现代浏览器都内置了这些工具(包括 Firefox,就在最近;Firebug 的首席开发人员有一项新工作,因此 Mozilla 的人需要加强它)。
  • 你实际上打算做什么?你只是捕获&lt;a&gt; 点击吗?或检查他们是否试图将您指向网站?
  • @powtac 我知道你可以做到这一点,我已经检查了所有的请求并且有很多请求,我只对一个感兴趣。我只想获取完整的请求 url 以便稍后将其插入网页中

标签: javascript http-headers xmlhttprequest greasemonkey userscripts


【解决方案1】:

前段时间我为此做了一个基本的脚本,基本上你只要把内置的XMLHttpRequest包装起来就行了。

(function() {
  'use strict';
  var oldXHR, stateChangeHandler, prop;

  oldXHR = window.XMLHttpRequest;

  stateChangeHandler = function (evt) {
    switch (this.readyState) {
      case oldXHR.OPENED:
        console.log('Request was made', this, evt);
        break;
      case oldXHR.DONE:
        console.log('Request finished', this, evt);
        break;
    }
  };

  function newXHR() {
    var xhr = new oldXHR();
    xhr.addEventListener('readystatechange', stateChangeHandler);
    return xhr;
  }

  // Copy original states and toString
  for (prop in oldXHR)
    newXHR[prop] = oldXHR[prop];

  window.XMLHttpRequest = newXHR;
})();

【讨论】:

    猜你喜欢
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2018-07-17
    相关资源
    最近更新 更多