source

AJAX 응답에서 쿠키를 얻는 방법

factcode 2023. 2. 17. 21:41
반응형

AJAX 응답에서 쿠키를 얻는 방법

나는 가지고 있다$.ajax같은 도메인에서 요청을 받고 쿠키를 읽고 싶습니다.계속 돌아온다null.

$.ajax({
    type: 'GET',
    url: myUrl,
    success: function(output, status, xhr) {
        alert(xhr.getResponseHeader("MyCookie"));
    },
    cache: false
});

좋은 생각 있어요?저는 크롬을 사용하고 있습니다.

브라우저는 보안상의 이유로 ajax 요청에서 받은 것과 같은 서드파티 쿠키에 액세스할 수 없지만 자동으로 처리됩니다!

이 작업을 수행하려면 다음 작업을 수행해야 합니다.

1) 쿠키가 반환될 것으로 예상되는 Ajax 요청을 사용하여 로그인합니다.

$.ajax("https://example.com/v2/login", {
     method: 'POST',
     data: {login_id: user, password: password},
     crossDomain: true,
     success: login_success,
     error: login_error
  });

2) 접속처xhrFields: { withCredentials: true }브라우저에 의해 저장된 자격 증명을 사용하기 위한 다음 Ajax 요청에서

$.ajax("https://example.com/v2/whatever", {
     method: 'GET',
     xhrFields: { withCredentials: true },
     crossDomain: true,
     success: whatever_success,
     error: whatever_error
  });

이러한 쿠키는 브라우저에서 읽을 수 없는 경우에도 관리됩니다.headers또한document.cookie

다음 응답 헤더를 찾고 있습니다.Set-Cookie:

xhr.getResponseHeader('Set-Cookie');

하지만 HTTOnly 쿠키에서는 작동하지 않습니다.

갱신하다

XMLHttpRequest Level 1 및 XMLHttpRequest Level 2에 따르면 이 특정 응답 헤더는 다음 명령을 사용하여 얻을 수 있는 "금지된" 응답 헤더에 속합니다.getResponseHeader()이 기능이 동작하는 유일한 이유는 기본적으로 브라우저입니다.

xhr.getResponseHeader('Set-Cookie');

난 안 먹힐 거야.

나는 이것을 사용한다.

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) != -1) return c.substring(name.length,c.length);
    }
    return "";
} 

success: function(output, status, xhr) {
    alert(getCookie("MyCookie"));
},

http://www.w3schools.com/js/js_cookies.asp

Yebmouxing과 비슷하게 나는 할 수 없었다.

 xhr.getResponseHeader('Set-Cookie');

작업 방법을 참조하십시오.서버에서 httponly를 false로 설정해도 null만 반환됩니다.

저도 간단한 js 도우미 기능을 써서 문서에서 쿠키를 가져왔습니다.이 기능은 매우 기본적이며 자신을 추가하기 위한 추가 정보(라이프 범위, 도메인, 경로 등)를 알고 있는 경우에만 작동합니다.

function getCookie(cookieName){
  var cookieArray = document.cookie.split(';');
  for(var i=0; i<cookieArray.length; i++){
    var cookie = cookieArray[i];
    while (cookie.charAt(0)==' '){
      cookie = cookie.substring(1);
    }
    cookieHalves = cookie.split('=');
    if(cookieHalves[0]== cookieName){
      return cookieHalves[1];
    }
  }
  return "";
}

언급URL : https://stackoverflow.com/questions/12840410/how-to-get-a-cookie-from-an-ajax-response

반응형