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에 더 유리하다.
[출처] https://sarc.io/index.php/httpd/261-apache-cors