source

JavaScript에서 XMLHttpRequest를 사용하여 쿠키(헤더)를 설정하려면 어떻게 해야 합니까?

gigabyte 2023. 2. 23. 22:52
반응형

JavaScript에서 XMLHttpRequest를 사용하여 쿠키(헤더)를 설정하려면 어떻게 해야 합니까?

XMLHttpRequest를 사용하여 XSS 요구에 Cookie를 설정하려고 합니다.

XMLHttpRequest Specification을 찾았습니다.섹션 4.6.2-5에서는 Cookie, Cookie2, 기타 헤더의 설정은 허용되지 않는 것 같습니다만, 회피책이 있으면 좋겠다고 생각했습니다.

my (jQuery) code는 아래와 같으나 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;
  }
});

이것은 할 수 있다.$.ajax 콜에서는 다음 사항이 필요합니다.

xhrFields: {
    withCredentials: true
}

(jQuery 문서를 참조). 또한 CORS를 지원하기 위해 요청하려는 사이트도 필요합니다(최소한 CORS는 사용자의 오리진을 허용하고 다음을 설정할 필요가 있습니다).Access-Control-Allow-CredentialsHTTP 헤더true).

확실히 효과가 있어.HTTPS를 통해 Basic Auth 등을 사용하여 실행할 수 있습니다.jQuery는 (xhrFields)에 지시하면 모든 것(auth 헤더, cookie)을 전송합니다.또한 사이트에서 적절한 CORS 헤더가 제공됩니다.포기하지 마세요!

보안상의 이유로 XMLHTTPRequest 중에는 헤더를 변경할 수 없습니다.

document.cookie를 사용하여 쿠키를 설정하면 요청을 전송할 때 쿠키 헤더에 쿠키가 포함됩니다.

https://developer.mozilla.org/En/Server-Side_Access_Control

origin을 허용하고 Access-Control-Allow-Credentials HTTP 헤더를 true로 설정할 수도 있습니다.

jquery 코드와 동일한 도메인에 있는 요청의 경우 jquery cookie 플러그인을 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/2320110/how-do-i-set-a-cookie-header-with-xmlhttprequest-in-javascript

반응형