티스토리 뷰
발생일: 2013.07.11
문제:
크로스 브라우징 이슈를 해결하기 위해 CORS 프록시 서버를 구현해야 한다.
문제:
크로스 브라우징 이슈를 해결하기 위해 CORS 프록시 서버를 구현해야 한다.
서버에서 추가할 작업이 많지 않다고 들었는데, 어떤 것들을 구현해주면 될까?
해결책:
해결책:
아래 링크를 참고하면 된다.
아래는 위 링크의 내용 중 기억할 만한 몇 가지만 메모해둔 것이다.
withCredentials
CORS는 기본적으로 쿠키를 보내거나 설정하지 않는다.
쿠키를 보내거나 설정하고 싶다면, `withCredentials` 속성을 설정한다.
xhr 객체에도 설정해야 하고, 서버에서도 `Access-Control-Allow-Credentions` 헤더에 true를 할당해서 보내야 한다.
xhr.withCredentials = true;
Access-Control-Allow-Credentials: true
CORST 요청에는 간단한 것과 약간 복잡한 것이 있다.
간단한 요청은,
- HEAD, GET, POST 메서드를 사용하고,
- Accept, Accept-Language, Content-Language, Lsat-Event-ID, Content-Type 헤더만 사용하며,
- 응답으로 application/x-www-form-urlenceded, multipart/form-data, text/plain 만 사용할 때
복잡한 요청은
- PUT, DELETE 메서드를 사용하거나,
- 기본 헤더 이외의 헤더를 보내려고 하거나,
- 응답으로 application/json 같은 타입을 사용하려고 할 때
복잡한 요청의 경우, 먼저 `OPTION` 메서드로 요청을 보내고,
이 때 받은 헤더 정보로 다시 요청을 보내는 방식이다.
요청하는 헤더 설명
Origin
요청 호스트
Access-Control-Request-Method
실제 HTTP 요청 메서드
Access-Control-Request-Headers
요청에 포한되는 간단한 헤더가 아닌 경우
서버에서 응답하는 헤더 설명
Access-Control-Allow-Origin
요청을 허용할 오리진. 보낸 origin 헤더 값이나 * 를 응답하면 된다.
Access-Control-Allow-Credentials
(옵션) 쿠키를 설정하려는 경우 true를 할당하면 된다.
Access-Control-Expose-Headers
(옵션) XMLHttpRequest2 객체는 getResponseHeader() 메서드로 아래 헤더에만 접근할 수 있다.
Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, Pragma
다른 응답 헤더에도 접근하게 허용하고 싶다면, 여기에 헤더 이름을 컴마로 구분해 추가하면 된다.
반응형
댓글
공지사항