【发布时间】:2012-12-04 17:44:28
【问题描述】:
我正在使用以下 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 和上面的代码加载自:https://example.com/js/main.jshttps://example.com/js/intercept.js
当 ajax 调用的域只是“example.com”时,上面的代码运行良好,但是当对域“sub.example.com”进行 ajax 调用时,上面的代码无法拦截该请求。
有人知道为什么它不起作用吗?
【问题讨论】:
-
“不工作”是什么意思,是跨域请求,这样做应该有异常。
-
不,控制台上没有错误/异常。 “不起作用”是指“sub.example.com”的ajax请求没有被拦截,我没有看到它的console.log条目。我知道肯定会请求它,因为我正在通过 Fiddler 代理所有浏览器流量。
-
CORS 由两个请求组成,首先检查另一个页面是否允许来自当前域的请求,然后在第二个中发送实际请求。所以如果你只看到一个,那就有问题了。
标签: javascript ajax xmlhttprequest intercept