CORS(Cross-Origin Resource Sharing)는 웹 애플리케이션에서 다른 출처의 리소스에 접근할 수 있도록 허용하는 보안 방식입니다. 출처(Origin)란 프로토콜, 호스트, 포트가 모두 동일한 URL을 의미합니다. 예를 들어, https://example.com과 https://www.example.com은 다른 출처입니다.
CORS를 허용하려면 서버 측에서 응답 헤더에 Access-Control-Allow-Origin 헤더를 추가해야 합니다. 이 헤더는 클라이언트가 요청한 출처를 나타내는 값으로 설정됩니다. 만약 모든 출처에서 리소스에 접근을 허용하려면, Access-Control-Allow-Origin 헤더에 '*'를 설정하면 됩니다.
또한, 서버 측에서는 Access-Control-Allow-Methods, Access-Control-Allow-Headers 등의 다른 응답 헤더도 설정할 수 있습니다. 이 헤더들은 클라이언트가 요청할 수 있는 메서드나 허용되는 헤더 등을 지정합니다.
클라이언트 측에서는 XMLHttpRequest 객체나 Fetch API 등을 사용하여 CORS 요청을 보낼 때, 요청 헤더에 Origin을 포함해야 합니다. 이는 서버가 CORS 요청임을 인식하고, 적절한 응답 헤더를 반환할 수 있도록 하는데 필요합니다.
최근에는 서버 측에서 CORS를 허용하는 대신, Reverse Proxy나 API Gateway 등을 이용하여 클라이언트와 서버 사이에서 요청을 라우팅하고, CORS 문제를 해결하는 방식도 있습니다.