2014-01-17 62 views
0

我已將原型XMLHttpRequest添加到其他功能。
但是當我嘗試自定義標題添加到呼叫它不工作(沒有錯誤和Chrome開發人員工具欄中沒有調用)從原型中添加自定義標頭

我的代碼:

(function(){ 
var originalOpenFunction = XMLHttpRequest.prototype.open; 
XMLHttpRequest.prototype.open = function (method, url, async, user, pass) { 

    //Add custom header 
    this.setRequestHeader('custom-header', 'value'); 

    originalOpenFunction.call(this, method, url, async, user, pass); 
}; 
})(); 

$.ajax("http://www.jsfiddle.net"); 

當我刪除了setRequestHeader線,我收到了我預期的錯誤(不允許跨越原點)。

注意雖然我使用jQuery測試JavaScript,解決這個應該是原生的JavaScript。

JsFiddle

回答

1

通過揭露錯誤:

$.ajax("http://www.jsfiddle.net").fail(function (e) { 
    console.log(e); 
}); 

您將獲得:

InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': the object's state must be OPENED.

這意味着你需要調用open()你打電話之前setRequestHeader()

然後您將遇到跨域問題。確保你沒有試圖對不支持的域進行跨域請求。外殼從http://fiddle.jshell.net運行。

請求域工作(返回HTML)。

參見:http://jsfiddle.net/HfAZN/3/

相關問題