我使用下面的JavaScript代码来拦截AJAX调用:
https://example.com/js/main.js
https://example.com/js/intercept.js
JavaScript的AJAX拦截
:
XMLHttpRequest.prototype.realOpen = XMLHttpRequest.prototype.open;
var newOpen = function(method, url, async, user, password) {
console.log("Intercepted open (" + url + ")");
this.realOpen(method, url, async, user, password);
}
XMLHttpRequest.prototype.open = newOpen;
其执行AJAX调用和上述代码中的JavaScript从装载上述代码在ajax调用的域只是“example.com”的情况下工作良好,但是当为域“sub.example.com”调用ajax时,以上代码无法截获该请求。
有人知道为什么它不起作用吗?
你是什么意思“不工作”,这是一个跨域请求,这样做时应该有一个例外。 – xiaoyi
否控制台上没有错误/异常。通过“不工作”,我的意思是在那里“sub.example.com”的Ajax请求不被拦截,我没有看到它的console.log条目。我知道这是要求肯定的,因为我通过Fiddler代理所有浏览器流量。 – yatin
[CORS](https://developer.mozilla.org/en-US/docs/HTTP_access_control)由两个请求组成,首先检查另一个页面是否允许来自当前域的请求,然后在第二个请求中发送实际请求一。所以如果你只看到一个,就有问题。 – xiaoyi