액세스 컨트롤 에러
웹사이트에서 XMLHttpRequest
를 이용한 ajax 요청을 보낼 때, 현재 웹사이트의 도메인과 ajax 요청을 보낼 웹사이트의 도메인이 다른 경우 브라우저 차원에서 보안을 위해 다음과 같은 액세스 컨트롤 에러를 발생시킨다.
XMLHttpRequest cannot load http://www.example.co.kr/wp/wp-admin/admin-ajax.php?action=get_portfolio_item_action&postid=178.
Origin http://example.co.kr is not allowed by Access-Control-Allow-Origin.
위 예시와 같이 상위 도메인이 같더라도, 서브도메인만 달라지면 액세스 컨트롤 에러가 발생한다. 따라서 웹사이트가 www.example.co.kr 로 접속하거나 example.co.kr로 접속했을때 동일한 페이지를 보여준다고 해도 엄연히 다른 사이트에 접속한것으로 웹브라우저가 인식한다.
따라서 위와같이 동일사이트에 접속했다고 생각했음에도 불구하고, 생각치 않게 액세스 컨트롤 에러가 발생하는 실수를 할 수 있기 때문에, 이러한 실수를 막으려면 둘중에 하나의 도메인으로 통일해서 강제 redirection을 걸어놓는 것이 좋다.
리디렉션 설정
웹서버 자체 설정에서 alias를 만들거나 .htcaccess 파일에 RewriteRule
을 통해 www.example.co.kr 을 무조건 example.co.kr로 리디렉션 하도록 만들 수 있다.
www.example.com 으로 접속시에 example.com 으로 자동으로 리디렉션을 하기 위해서는 .htaccess 파일에 다음과 같은 조건식을 적어주면 된다.
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]