정의
- CORS(Cross-Origin Resource sharing)은 다른 도메인간 자원공유를 말한다.
- 브라우저간 데이터를 주고 받는 과정에서 서로 다른 도메인간 API요청을 보내면 CORS 에러가 발생한다.
필요한 이유?
- 내가 허용한 Origin 들만 요청할 수 있도록 제한하기 위함.
동작 방식
- 브라우저가 리소스 요청시 헤더에 추가 정보를 담아 preflight 요청을 보낸다.
- 내 현재 오리진은 무엇이고, 어떤 메서드를 사용할 것이고, 어떤 헤더를 포함하는지 등.
- preflight 요청을 받은 서버는 서버가 응답할 수 있는 허용 origin들을 헤어데 담아 보낸다.
- 브라우저는 이 응답 헤더를 보고 요청 가능한 origin 목록에 현재 origin이 포함된다면 리소스를 전송하고 불가능하면 cors 에러를 발생시킨다.
해결방법
- 서버에서 허용하고 싶은 origin들을 추가해주면된다.
- spring 에서는 cors 필터를 구현하면된다.