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

Как установить cookie (заголовок) с помощью XMLHttpRequest в JavaScript?

Я пытаюсь установить Cookie в запросе XSS с использованием XMLHttpRequest.

Я нашел Спецификацию XMLHttpRequest, и в разделе 4.6.2-5 показано, что настройка Cookie, Cookie2 и некоторых других заголовков не разрешены, но я надеялся, что там будет работа.

Мой (jQuery) код приведен ниже, но результирующий запрос завершается с ошибкой, так как cookie НЕ установлен.

$.ajax( {
  type : "POST",
  url : URL,
  data: SOAP_INBOX_MAIL_QUERY,
  dataType : "xml",
  async: false,
  beforeSend : function(xhr) {  
    var cookie = credentials["COOKIE"];
    console.info( "adding cookie: "+ cookie );          
    xhr.setRequestHeader('Cookie', cookie);
  },
  success : function(data, textStatus, xmLHttpRequest){


  },
  error : function(xhr, ajaxOptions, thrownError) {
    credentials = null;
  }
});
4b9b3361

Ответ 1

Это можно сделать. В вызове $.ajax вам понадобится следующее:

xhrFields: {
    withCredentials: true
}

(см. документы jQuery), и вам также понадобится сайт, на который вы делаете запрос, для поддержки CORS (они, по крайней мере, должны будут разрешить вам происхождение, а также установить заголовок HTTP Access-Control-Allow-Credentials на true).

Нет сомнений, что это работает. Вы можете сделать это через HTTPS, с Basic Auth и т.д. JQuery отправит все (заголовок auth, cookie), если вы сообщите об этом (xhrFields), и сайт предоставит правильные заголовки CORS. Не сдавайтесь!

Ответ 2

По соображениям безопасности вы не сможете изменить заголовок во время XMLHTTPRequest.

Ответ 3

Если вы установите cookie с помощью document.cookie, то при отправке запроса заголовок файла cookie будет включать его.

Ответ 5

Если ваш запрос в том же домене, что и код jquery, вы можете использовать jquery cookie cookie