본문 바로가기

리눅스

웹 서버에서 CORS 설정하는 방법

728x90

웹 서버에서 CORS 설정하는 방법

CORS 란

CORS(Cross-Origin Resource Sharing)는 웹 브라우저에서 실행되는 스크립트가 다른 출처(도메인, 프로토콜, 포트)의 리소스에 접근하는 것을 제한하는 보안 정책입니다.

 

웹 브라우저는 보안상의 이유로 JavaScript와 같은 클라이언트 측 코드가 서로 다른 출처에서 리소스를 요청하는 것을 차단합니다. 이 때, 다른 출처에서 요청한 리소스에는 보안상의 이유로 접근할 수 없는 제한이 걸리게 됩니다.

 

하지만, AJAX 등의 기술을 사용하여 다른 출처에서의 리소스에 접근하고 싶은 경우도 많아짐에 따라, CORS 정책을 이용하여 다른 출처에서도 안전하게 리소스에 접근할 수 있도록 합니다.

 

서버측에서는 HTTP 응답 헤더인 Access-Control-Allow-Origin을 사용하여 다른 출처에서의 요청을 허용할 출처를 지정할 수 있습니다. 이를 이용하여, 클라이언트 측 코드에서 다른 출처에서의 리소스에 안전하게 접근할 수 있도록 합니다.

웹 서버에서 CORS 설정하는 방법

CORS(Cross-Origin Resource Sharing) 에러는 웹 어플리케이션이 다른 도메인의 리소스를 요청할 때 발생하는 보안 정책입니다.

 

CORS 에러를 해결하기 위해서는, 서버측에서 요청을 받는 측과 보내는 측 모두에서 설정을 해주어야 합니다.

Nginx에서 CORS 설정하는 방법

Nginx에서는 add_header 명령어를 이용하여 CORS 헤더를 설정할 수 있습니다. 이를 위해 nginx.conf 파일에서 다음과 같은 설정을 추가해주세요.

location / {
    #CORS 허용
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}

위의 설정에서 Access-Control-Allow-Origin은 어떤 도메인에서든 요청이 허용되도록 설정한 것입니다. 이를 변경하여, 특정 도메인에서만 요청을 허용할 수도 있습니다.

728x90

Apache에서 CORS 설정하는 방법

Apache에서는 .htaccess 파일에서 CORS 헤더를 설정할 수 있습니다. 이를 위해 .htaccess 파일에 다음과 같은 설정을 추가해주세요.

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header set Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range"
Header set Access-Control-Expose-Headers "Content-Length,Content-Range"

위의 설정에서도 Access-Control-Allow-Origin은 어떤 도메인에서든 요청이 허용되도록 설정한 것입니다. 이를 변경하여, 특정 도메인에서만 요청을 허용할 수도 있습니다.

 

또한, Apache에서는 mod_headers 모듈을 활성화해야 설정이 적용됩니다. mod_headers 모듈이 활성화되어 있지 않다면, Apache를 재시작하거나 서버를 재시작해야 합니다.

sudo a2enmod headers
sudo systemctl restart apache2

위의 명령어를 이용하여 mod_headers 모듈을 활성화하고, Apache를 재시작할 수 있습니다.

 

참고URL

- 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS) : https://sangchul.kr/171

 

728x90