CORS 에러

Updated: 2025-04-10

weekly
cover image

CORS 에러

CORS(Cross-Origin Resource Sharing) 에러는 웹 애플리케이션 개발 시 자주 발생하는 문제 중 하나입니다. 이 에러는 보안상의 이유로 브라우저가 다른 출처(origin)의 리소스에 접근하는 것을 제한할 때 발생합니다.

CORS 에러 발생 원인

웹 브라우저는 보안상의 이유로 동일 출처 정책(Same-Origin Policy)을 따릅니다. 동일 출처 정책은 브라우저가 스크립트에서 다른 출처의 리소스에 접근하는 것을 기본적으로 차단합니다.

여기서 출처는 프로토콜, 호스트, 포트를 조합한 것을 의미합니다. 예를 들어, http://example.comhttps://example.com은 프로토콜이 다르므로 다른 출처로 간주됩니다.

CORS 에러는 다음과 같은 상황에서 발생합니다.

  • 다른 도메인: 웹 애플리케이션이 다른 도메인의 API에 요청을 보낼 때
  • 다른 포트: 웹 애플리케이션이 같은 도메인의 다른 포트에서 실행되는 API에 요청을 보낼 때
  • 다른 프로토콜: 웹 애플리케이션이 HTTP에서 HTTPS로 또는 그 반대로 요청을 보낼 때

CORS 에러 해결 방법

CORS 에러를 해결하는 방법은 크게 서버 측 설정과 클라이언트 측 설정으로 나눌 수 있습니다.

서버 측 설정

가장 일반적인 해결 방법은 서버에서 CORS 헤더를 설정하는 것입니다. 서버에서 Access-Control-Allow-Origin 헤더를 설정하여 허용할 출처를 명시적으로 지정할 수 있습니다.

  • Access-Control-Allow-Origin: *: 모든 출처를 허용합니다. (보안상 권장되지 않음)
  • Access-Control-Allow-Origin: http://example.com: 특정 출처만 허용합니다.
  • Access-Control-Allow-Methods: 허용할 HTTP 메서드를 지정합니다. (예: GET, POST, PUT, DELETE)
  • Access-Control-Allow-Headers: 허용할 HTTP 헤더를 지정합니다. (예: Content-Type, Authorization)
  • Access-Control-Allow-Credentials: 쿠키 또는 인증 정보를 허용할지 여부를 지정합니다.

클라이언트 측 설정

클라이언트 측에서 CORS 에러를 해결하는 방법은 다음과 같습니다.

  • 프록시 서버 사용: 클라이언트와 서버 사이에 프록시 서버를 두어 요청을 중계합니다. 프록시 서버는 동일 출처 정책을 우회하여 다른 출처의 리소스에 접근할 수 있습니다.
  • JSONP 사용: script 태그를 사용하여 다른 출처의 스크립트를 로드하는 JSONP(JSON with Padding)를 사용할 수 있습니다. JSONP는 GET 요청만 지원하고, CORS 헤더를 설정할 수 없는 경우에 유용합니다.
  • 브라우저 확장 프로그램 사용: 브라우저 확장 프로그램을 사용하여 CORS 제한을 우회할 수 있습니다. 하지만 이 방법은 보안상의 위험이 있으므로 신뢰할 수 있는 확장 프로그램만 사용해야 합니다.

용어 정리:

  • CORS: '교차 출처 리소스 공유(Cross-Origin Resource Sharing)'의 약자입니다. 웹 페이지에서 다른 도메인의 리소스를 요청할 때 발생하는 보안 문제를 해결하기 위한 표준입니다.
  • 프록시 서버: 클라이언트와 서버 사이에서 중개자 역할을 하는 서버. 클라이언트가 서버에 직접 요청을 보내는 대신, 프록시 서버를 통해 요청을 보내고, 프록시 서버는 서버로부터 받은 응답을 다시 클라이언트에게 전달합니다.

문의 사항이 있으시면 언제든지 개인 메일로 연락 주시기 바랍니다.

메일 보내기

© 2024. kimyoungho all rights reserved.