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