Подтвердить что ты не робот

Задайте заголовок запроса в JavaScript.

Кажется, что я не могу изменить большинство заголовков запросов из JavaScript при вызове AJAX с использованием XMLHttpRequest. Обратите внимание, что когда request.setRequestHeader нужно вызывать после request.open() в браузерах Gecko (см. http://ajaxpatterns.org/Talk:XMLHttpRequest_Call). Когда я устанавливаю Referer, он не устанавливается (я посмотрел заголовки запросов, отправленные с использованием Firebug и Tamper Data). Когда я устанавливаю User-Agent, он полностью перепутал вызов AJAX. Однако настройка Accept и Content-Type работает. Предотвращается ли настройка Referer и User-Agent в Firefox 3?

var request = new XMLHttpRequest();
var path="http://www.yahoo.com";
request.onreadystatechange=state_change;

request.open("GET", path, true);
request.setRequestHeader("Referer", "http://www.google.com");
//request.setRequestHeader("User-Agent", "Mozilla/5.0");
request.setRequestHeader("Accept","text/plain");
request.setRequestHeader("Content-Type","text/plain");

request.send(null);
    function state_change()
{
if (request.readyState==4)
  {// 4 = "loaded"
  if (request.status==200)
    {// 200 = OK
    // ...our code here...
    alert('ok');
    }
  else
    {
    alert("Problem retrieving XML data");
    }
  }
}
4b9b3361

Ответ 1

W3C Spec на setrequestheader.

Краткие пункты:

Если заголовок запроса уже установлено, то новое значение ДОЛЖЕН быть объединен с существующим значение с использованием COMMA U + 002C, за которым следует пробел U + 0020 для разделения.

UA могут указывать начальное значение заголовка User-Agent, но ДОЛЖНЫ разрешить авторам добавлять к нему значения.

Однако - после поиска в инфраструктуре XHR в jQuery они не позволяют вам изменять заголовки User-Agent или Referer. Самое близкое:

// Set header so the called script knows that it an XMLHttpRequest
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

Я склоняюсь к мнению, что то, что вы хотите сделать, отрицается политикой безопасности в FF - если вы хотите передать какой-то пользовательский заголовок типа Referer, который вы всегда можете сделать:

xhr.setRequestHeader('X-Alt-Referer', 'http://www.google.com');

Ответ 2

@gnarf ответ правильный. хотел добавить дополнительную информацию.

Справка об ошибке Mozilla: https://bugzilla.mozilla.org/show_bug.cgi?id=627942

Завершите эти шаги, если заголовок является нечувствительным к регистру совпадением для одного из следующих заголовков:

Accept-Charset
Accept-Encoding
Access-Control-Request-Headers
Access-Control-Request-Method
Connection
Content-Length
Cookie
Cookie2
Date
DNT
Expect
Host
Keep-Alive
Origin
Referer
TE
Trailer
Transfer-Encoding
Upgrade
User-Agent
Via

Источник: https://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#dom-xmlhttprequest-setrequestheader