dev/web

Ajax 크로스 도메인 세션유지

재삐신생 2017. 3. 2. 14:08
반응형

세션(HTTP Session)

웹 프로토콜 HTTP는 무상태(stateless)이다.

전통적으로 로그인 인증처리를 위해, 웹서버는 프로토콜과 무관하게 세션이라는 것을 제공한다.

이는 웹 어플리케이션에게 필요한 state를 서버에 전달하기 위한 목적으로 session이나 cookie를 이용하는 대체수단정도로 볼 수 있다.

세션이 생기면서 웹서버는 상태 프로토콜(stateful)처럼 동작하고 있다.


XMLHttpRequest 과 CORS

AJAX 통신시 크로스 도메인 이슈가 있으며,

이에 대한 해결책으로 CORS라는 게 있다.

사전요청(preflight)으로 서버에 질의한뒤, 실제 요청을 보내는 형태로 되어있다.

참고: https://developer.mozilla.org/ko/docs/Web/HTTP/Access_control_CORS


withCredentials

CORS를 적용하여도, 세션을 유지하려면 cookie를 보내줘야하는데, 이때 withCredentials옵션을 사용하여 해결할 수있다.

이때 서버 응답 헤더에 Access-Control-Allow-Origin을 *로 지정하는 것은 불가능 하며, Access-Control-Allow-Credentials 도 true로 설정하면, 크로스 도메인간 cookie도 사용할 수 있다.


참고로 이때 브라우져에서 쿠키접근은 불가능하다. XHR이 쿠키값을 들고 있을 것이다.


ref:

https://developer.mozilla.org/ko/docs/Web/HTTP/Access_control_CORS

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

반응형