CORS( Cross-origin resource sharing )은 XMLHttpRequest를 사용한 AJAX 호출을 Cross-Domain으로 가능하게 해준다. 

( Cross-Domain이 가능하다는 것은  [ www.A.com ]의 웹페이지에서 [ www.B.com ]의 resource를 사용할 수 있게 해준다는 것이다. )

특히 XMLHttpRequest는 request가 만들어진 도메인 내에서만 사용되도록 제한되어 왔지만,

현대에서는 점점 mash-up구조( 구글맵 연동이나, 여러가지 다른 open API를 연동) 에 대한 요구가 커지면서,

W3C는 CORS mechanism을 제안하였다. 

 

CORS를 지원하기 위해서 Cross Domain호출을 받아주는 서버( www.B.com )에서 이러한 호출방식을 받아주겠다는 설정을 해줘야 한다.   

 

- Apache CORS 설정

1. mod_headers 설정 :  Apache는 default가 enable이다. 

a2enmod headers

 

2. httpd.conf : <Directory>, <Location>, <Files>, <VirtualHost>안에 설정

       또는 .htaccess 안에 설정 가능

Header set Access-Control-Allow-Origin "*"

 

- Nginx

1. nginx.conf 설정

add_header Access-Control-Allow-Origin *;

 

# Cross-Domain 호출은 JSONP( JSON with Padding ) 을 사용할 수도 있으나,

JSONP는 get방식만 가능하다. 반면, CORS는 다른 HTTP Request방식도 지원이 된다.

그리고 CORS는 XMLHttpRequest를 사용 할 수 있으므로 error handling에 더 유리하다.