CORS에서 Credentials(인증서) 통신방법

Credentials (인증서)

  • Credentials 이란 쿠키, 인증헤더, TLS client certificates(증명서)를 말함
  • Credentials 이 있는 CORS 요청은 Client와 Server 둘다 Credentials를 사용하겠다는 속성을 설정해줘야 통신이 가능

클라이언트 Ajax 요청시 XMLHttpRequest.withCredentials 속성 설정

CORS(Cross-Origin Resource Sharing) 요청시 Client에서 XMLHttpRequest.withCredentials 속성을 true 로 설정을 해야합니다.

  • 요청을하기 전에 withCredentials가 true로 설정되어 있지 않으면 다른 도메인의 XMLHttpRequest가 자신의 도메인에 대한 쿠키 값을 설정할 수 없음
  • withCredentials를 true로 설정하여 얻은 타사 쿠키는 여전히 동일한 출처 정책을 준수하므로 document.cookie 또는 응답 헤더를 통해 요청하는 스크립트에서 액세스 할 수 없음
1
2
3
4
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/', true);
xhr.withCredentials = true;
xhr.send(null);

서버 응답 헤더에 Access-Control-Allow-Credentials 속성 설정

클라이언트 Preflight Repuest의 응답 헤더에서 Access-Control-Allow-Credentials: true 설정을 해줘야
브라우저에서 응답한 컨텐츠를 사용자에게 제공할 수 있습니다.(Get 요청은 해당되지 않음)

1
Access-Control-Allow-Credentials: true

Resource