SOP와 CORS

1. SOP(Same-Origin Policy)

브라우저의 보안 정책으로, 프로토콜/도메인/포트가 모두 같아야 동일 출처로 간주한다

  • 서버-서버 통신에는 적용되지 않고 브라우저-서버 통신시 브라우저에서 이를 보안상의 이유로 막는 것.

    • PostMan을 통한 요청은 브라우저를 사용한 요청이 아니므로 CORS에 걸리지 않는다.

  • 만약, 셋중 하나라도 다르다면, JS로 다른 출처의 리소스를 읽어 오는 것을 차단한다.

2. CORS(Cross-Origin Resource Sharing)

서버가 응답 헤더로 “이 출처(Origin)에서 오는 요청은 읽어도 된다”고 브라우저에게 허용을 선언하는 메커니즘.

1) CORS로 설정 가능한 옵션들

  • Access-Control-Allow-Origin (허용할 Origin)

  • Access-Control-Allow-Methods (허용할 메서드)

  • Access-Control-Allow-Headers (허용할 요청 헤더)

  • Access-Control-Allow-Credentials (쿠키/인증정보 전송 허용)


2. Web MVC 전역 CORS 설정 예시

장점

  • 중앙집중 관리, API 스펙 변화 대응 쉬움

주의

  • Spring Security가 활성화된 경우, Security의 CORS 설정이 우선된다.


3. Spring Security 적용 후 CORS 설정 예시

  • Security 필터 체인으로 들어오는 요청은 Security가 CORS를 직접 처리하도록 해야 함.

Last updated