[ajax] AJAX 응답이 쿠키를 설정할 수 있습니까?

AJAX 응답이 쿠키를 설정할 수 있습니까? 그렇지 않은 경우 대체 솔루션은 무엇입니까? Javascript 또는 이와 유사한 것으로 설정해야합니까?



답변

, 서버는 일반 요청과 AJAX 요청을 구별 할 수 없으므로 일반 요청과 마찬가지로 서버 측 코드에서 AJAX 요청에 쿠키를 설정할 수 있습니다.

AJAX 요청은 서버에 요청하는 특별한 방법이므로 서버는 모든 HTTP 요청에서와 같이 응답해야합니다. 요청에 대한 응답으로 쿠키를 추가 할 수 있습니다.


답변

XMLHttpRequest대한 w3 사양 섹션 4.6.3에 따르면 사용자 에이전트는 Set-Cookie 헤더를 준수 해야합니다. 대답은 ‘그렇다’입니다.

인용:

사용자 에이전트가 HTTP 상태 관리를 지원하는 경우 쿠키를 유지하고 버리고 쿠키를 보내십시오 (Set-Cookie 응답 헤더에서 수신되고 쿠키 헤더에서 전송 됨).


답변

기록을 위해, AJAX 호출이 동일한 도메인에서 이루어진 경우에만 위의 모든 사항이 (아직도) 참임을 명심하십시오. AJAX를 사용하여 다른 도메인에서 쿠키를 설정하려는 경우 완전히 다른 웜 캔을 여는 것 입니다. 그러나 도메인 간 쿠키를 읽는 것은 효과가 있습니다 (또는 최소한 서버에서 쿠키를 제공합니다. 클라이언트의 UA가 코드에 액세스하도록 허용하는지 여부는 2014 년 현재 다른 주제입니다).


답변

또한 서버가 http가 아닌 요청에 보안 쿠키를 설정하지 않았는지 확인하십시오. 내 아약스 요청에 “보안”이 설정된 PHP 세션이 있다는 것을 알았습니다. https를 사용하지 않았기 때문에 세션 쿠키를 다시 보내지 않고 각 아약스 요청에서 세션이 재설정되었습니다.


답변