2014-01-17 5 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

Expose ошибки по:

$.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/

Смежные вопросы