CORS
별칭: CORS · Cross-Origin Resource Sharing · 교차 출처 리소스 공유
브라우저가 다른 출처의 API 요청을 허용할지 판단하는 보안 규칙.
CORS는 웹페이지가 자기 출처와 다른 서버의 리소스를 읽을 때 적용되는 브라우저 보안 장치다. 외부 API가 내 웹앱 주소를 허용하지 않으면 프론트에서 직접 호출이 막힐 수 있어 서버 route를 중간에 둔다.
정의
CORS(Cross-Origin Resource Sharing)는 브라우저가 다른 출처(origin)의 리소스를 읽는 요청을 허용할지 판단하는 HTTP 기반 보안 메커니즘이다. 출처는 프로토콜, 호스트, 포트의 조합으로 구분된다.
왜 중요한가
초보자가 외부 API 문서를 보고 URL을 브라우저에서 직접 호출했는데 "CORS 에러"가 나면 코드가 틀렸다고 생각하기 쉽다. 실제로는 브라우저가 보안상 다른 출처 응답을 읽지 못하게 막은 것일 수 있다. 서버에서 호출하면 같은 제한을 받지 않는 경우가 많아 Next.js route handler 같은 서버 route가 해결책이 된다.
Semiclass에서의 의미
신호의 검 단계에서 CORS는 "외부 데이터는 그냥 붙지 않는다"는 대표 사례다. API 주소와 키가 맞아도 브라우저 보안 정책 때문에 막힐 수 있고, 이때 AI에게 "서버 route를 만들어 API 키를 숨기고 CORS 문제를 우회하는 구조로 바꿔줘"라고 요청해야 한다.
주의할 점
CORS를 무조건 넓게 여는 것은 해결책이 아니다. 내 서버를 운영한다면 허용 origin을 필요한 범위로 제한해야 하고, 외부 API를 쓰는 입장이라면 제공자의 CORS 정책을 바꿀 수 없을 때가 많다. 이 경우 서버 route, 프록시, 백엔드 작업 큐 같은 구조를 검토한다.