4

我的网站正在运行一些第 3 方应用程序,该应用程序正在执行一些 http 请求以注入数据。我想知道是否有可能捕获从我的页面初始化的任何 http 请求,如果可能的话如何捕获它?

我想用 javascript 来捕捉它,因为我需要在我的页面上显示一些关于 http 请求的提示。

4

1 回答 1

9

我想用 javascript 来捕捉它,因为我需要在我的页面上显示一些关于 http 请求的提示。

您可以将XMLHttpRequest包装在一个函数中,该函数在返回真正的XMLHttpRequest之前记录调用者

(function () { // scope saves you from infinite loops / loss of __xhr
    var __xhr = window.XMLHttpRequest; // back up
    function XMLHttpRequest() { // wrap
        console.log(
            XMLHttpRequest.caller || arguments.caller || 'caller not supported'
        );
        return new __xhr;
    }
    window.XMLHttpRequest = XMLHttpRequest; // shadow
}());

function foo() { // example
    var bar = new XMLHttpRequest();
}
foo(); // invoke

/* console logs
function foo() { // example
    var bar = new XMLHttpRequest();
}
*/

可以通过以下方式检索构造函数

var x = new XMLHttpRequest(); // function doing this gets logged
window.XMLHttpRequest = x.constructor; // normality restored
于 2013-06-10T09:55:24.753 回答