본문 바로가기

IT/프로그래밍

[Ajax/js] CORS (Cross-Origin Resource Sharing) 하는 방법

728x90

원글(이글루): 2011-11-11 14:55:31

CORS (Cross-Origin Resource Sharing) 하는 방법

참조URL: http://dvcs.w3.org/hg/cors/raw-file/tip/Overview.html

 본래 http->https로 iframe에서 통신을 할때 도메인이 다를경우 Cookie나 Header

정보들이 처리가 안되게 된다. 이를 지원하게 하기 위한 방법이 CORS이다.

1. 서버측 처리

1) Access-Control-Allow-Credentials: true

 - 클라보고 Header나 Cookie등 믿고 보내라고 하는 뜻

2) Access-Control-Allow-Origin: * 로 하면안됨.

  가급적 Origin (Referer가 아닌 Origin을 봐야할듯) 쪽에 있는 애를 저기에

 동적으로 넣어줘야하지 않을까 싶음.

 서버에서 Access-Control-Allow-Origin:를 요청한 패킷의 Origin을 보고 해당

  Origin값으로 내려줘야한다.

3) Access-Control-Max-Age: 86400

 이걸해야 OPTIONS를 해당 초동안 안올린다. (86400 = 하루로 해놔봤음)

 이걸 안내려주면 계속 OPTIONS를 때려댄다.

4) Access-Control-Allow-Methods: POST

 - 굳이 안해줘도 된다.

2. 클라(웹브라우저/js) 측 처리

1) js에서는 호출전에 다음과 같은 작업을 해야한다.

 - 필수로 넣어야한다.  (open하고 send사이에 있어야함)

  http_request.withCredentials = "true";

2) 요청시에 클라이언트는 Content-Type 를 text/plain으로 해서 요청해야함.

 - 사실 이건 지키지 않아도 정상 동작 하는 듯 하다.

 - 이런식==> http_request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");

꼭 해야하는건, 1.서버측의 1),2),3) 과 2.의 1) 이다.

728x90