我有一些使用jQuery执行ajax请求的代码,并处理成功和错误条件。如果出错,我想知道我调用的URL是什么,所以我可以记录它。此信息似乎包含在XMLHttpRequest.channel中,但是firefox正在抱怨访问它 -
Permission denied for <http://localhost:8081> to get property XMLHttpRequest.channel
我如何确定与XMLHttpRequest相关联的URL?掌握这些信息的安全问题是什么?欢呼声,
科林
答案 0 :(得分:5)
好的 - 抱歉 - 答案就在这里
http://api.jquery.com/ajaxError/
具体来自上面链接的代码 -
$('.log').ajaxError(function(e, xhr, settings, exception) {
if (settings.url == 'ajax/missing.html') {
$(this).text('Triggered ajaxError handler.');
}
});
显示了在发生ajax错误时如何访问请求网址。不解释为什么XMLHttpRequest.channel对象是不行的。无论如何,希望这将有助于其他人遇到类似的问题。
答案 1 :(得分:2)
安全问题是cross domain XHR requests。
在FF2中,您曾经可以在about:config
中覆盖此内容,另请参阅this blog,尤其是此首选项:
user_pref("capability.policy.default.XMLHttpRequest.channel", "allAccess");
但这在FF3中已经不可能了。并有充分的理由。
请注意XMLHttpRequest.channel
是特定于Gecko的,因此在非Gecko浏览器中不起作用。
答案 2 :(得分:1)
好吧,你只需添加它;]
XMLHttpRequest.prototype.baseOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url, async) { this._url = url; return XMLHttpRequest.prototype.baseOpen.apply(this, arguments); };
然后您可以在错误处理程序中请求xhr._url。
PS:对不起,刚刚发现这个帖子已经老了。
答案 3 :(得分:0)
Firebug使用显示所用URI的跟踪来显示此错误。