2010-06-17 78 views
4

我有一些使用jQuery執行ajax請求並處理成功和錯誤條件的代碼。發生錯誤時,我想知道我所調用的URL是什麼,所以我可以記錄它。這些信息似乎包含在XMLHttpRequest.channel,但Firefox抱怨訪問本 -查找XMLHttpRequest的URL

Permission denied for <http://localhost:8081> to get property XMLHttpRequest.channel 

任何想法我怎麼能確定與一個XMLHttpRequest相關的網址是什麼?獲取這些信息的安全問題是什麼?歡呼聲中,

科林

回答

1

安全問題是cross domain XHR requests

在FF2你曾經是能夠覆蓋這about:config,也看到this blog,尤其是這首:

user_pref("capability.policy.default.XMLHttpRequest.channel", "allAccess"); 

但是,這一切都不可能再在FF3。並有一個很好的理由。

請注意,XMLHttpRequest.channel是Gecko特定的,所以這不適用於非Gecko瀏覽器。

+0

你能解釋爲什麼只知道URL是一個安全問題? – mhsmith 2013-06-17 18:27:01

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錯誤時的url。沒有解釋爲什麼XMLHttpRequest.channel對象是不行的。無論如何,希望這可以幫助其他類似問題的人。

0

Firebug通過顯示所使用的URI的跟蹤顯示此錯誤。

0

嗯,你只是將它加入]

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。附:

附註:對不起,剛發現這個線程已經老了。