교차 도메인 POST 요청이 쿠키 Ajax Jquery를 전송하지 않습니다.
stackoverflow에 대해서는 이미 비슷한 논의가 있었던 것 같습니다만, 완전히 같은 것을 찾을 수 없었습니다.
CORS(Cross-Origin Resource Sharing)와 함께 쿠키를 보내려고 하는데, 작동이 되지 않습니다.
이건 내 암호야
$.ajax(
{
type: "POST",
url: "http://example.com/api/getlist.json",
dataType: 'json',
xhrFields: {
withCredentials: true
},
crossDomain: true,
beforeSend: function(xhr) {
xhr.setRequestHeader("Cookie", "session=xxxyyyzzz");
},
success: function(){
alert('success');
},
error: function (xhr) {
alert(xhr.responseText);
}
}
);
요청 헤더에 이 쿠키가 표시되지 않습니다.
JavaScript를 통해 CORS 요청에 대한 쿠키를 설정하거나 읽을 수 없습니다.CORS 에서는 크로스 오리진 요구를 허가하고 있습니다만, cookie 에는 브라우저의 같은 오리진 정책이 적용됩니다.즉, 같은 오리진의 페이지만이 cookie를 읽고 쓸 수 있습니다. withCredentials
리모트 호스트에 의해 설정된 쿠키가 그 리모트호스트에 송신되는 것만을 의미합니다.리모트 서버로부터의 cookie는,Set-Cookie
header를 클릭합니다.
일반적으로 이것은 잘못된 관행이기 때문에 쿠키 공유 프로세스는 해결되지 않습니다.
JSONP를 유형으로 사용해야 합니다.
$.ajax 문서부터:교차 도메인 요청 및 dataType: "jsonp" 요청은 동기 작업을 지원하지 않습니다.
$.ajax(
{
type: "POST",
url: "http://example.com/api/getlist.json",
dataType: 'jsonp',
xhrFields: {
withCredentials: true
},
crossDomain: true,
beforeSend: function(xhr) {
xhr.setRequestHeader("Cookie", "session=xxxyyyzzz");
},
success: function(){
alert('success');
},
error: function (xhr) {
alert(xhr.responseText);
}
}
);
최근 이 분야에 많은 변화가 있었기 때문에 참신한 답변이 도움이 될 것이라고 생각했습니다.
요청 중에 브라우저에서 다른 사이트로 쿠키를 보내려면 다음 기준을 충족해야 합니다.
- 타깃 사이트의 헤더에는및 라벨이 포함되어 있어야 합니다.한다면
Secure
사용되지 않음SameSite
헤더는 무시됩니다. - 요청은 다음 주소로 해야 합니다.
https
엔드포인트, 요건Secure
플래그를 설정합니다. - 그
XHRRequest
로 만들어야 한다withCredentials=true
사용하는 경우$.ajax()
이것은 파라미터에 의해 실현됩니다(예:jQuery=1.5.1+
) - 서버는 다음과 같이 응답해야 합니다.
Access-Control-Allow-Origin
요구에 일치하는 헤더Origin
header를 클릭합니다.(*
이 경우 존중되지 않습니다.)
많은 사람들이 리모트엔드포인트에 대한 로컬 개발을 시도하고 있습니다.이러한 조건이 충족되면 가능합니다.
저도 같은 문제가 있었어요.세션 ID는 쿠키로 전송되지만, 요청이 교차 도메인이기 때문에 브라우저의 보안 설정에 의해 쿠키가 전송되지 않습니다.
솔루션:(브라우저에서) 클라이언트에서 세션 ID를 생성하고 Javascript sessionStorage를 사용하여 세션 ID를 저장한 후 각 요청과 함께 세션 ID를 서버로 전송합니다.
나는 이 문제로 많은 어려움을 겪었고, 주변에 좋은 답이 많지 않았다.다음은 솔루션에 대한 자세한 기사입니다: Javascript Cross-Domain Request With Session
언급URL : https://stackoverflow.com/questions/14462423/cross-domain-post-request-is-not-sending-cookie-ajax-jquery
'sourcecode' 카테고리의 다른 글
구문 오류: 예기치 않은 토큰 < (0) | 2023.03.15 |
---|---|
페이지에서 Woocommerce 주문을 쿼리하는 방법 (0) | 2023.03.15 |
AngularJs 사전에서 ng-repeat을 사용하는 방법 (0) | 2023.03.15 |
MongoDB SELECT 카운트 기준 (0) | 2023.03.15 |
설정된 Y축 범위를 다시 차트화합니다. (0) | 2023.03.10 |