📍 CORS 란?
- Cross Origin Resource Sharing 의 약자로 다른 출처의 자원을 공유하는 것 이라고 한다.
- Spring Cloud 에서는 아무런 설정을 하지 않으면 보안적인 이유로 다른 출처의 HTTP 요청을 제한한다고 한다
- SOP (Same Origin Policy)
- 프론트와 백 서버는 나눠져 있기 때문에 CORS 정책을 설정해줌으로 다른 출처의 자원에 접근할 수 있도록 설정해줘야 한다.
📍 Cross-Origin 이란?
- 프로토콜이 다른경우
- 도메인이 다른경우
- 포트번호가 다른경우
📍 필요성
- 모든 곳에서 자원 접근이 가능하다면, 우리의 사이트를 흉내내 피싱사이트를 만들어 사용자 정보를 탈취할 수 있게된다.
- 이러한 공격을 막기위해 필요한 경우에만 서버와 합의해 요청할 수 있도록 하는것이 CORS 이다.
📍 CORS 의 동작 방식
- 단순 요청 (Simple Request)
- preflight 요청 없이 바로 요청을 보낸다.
- 단순 요청이 가능한 경우
Content-type
- application/x-www-form-urlencoded
- mulipart/form-data
- text/plain
GET
, POST
, HEAD
요청
- http 해더
- Accept, Accept-Language, Content-Language , Content-Type
- 사전 요청 (Preflight Request)
OPTIONS
메서드를 통해 다른 도메인 리소스에 요청이 가능한지 실제 요청 전에 미리 요청을 보내는 것.
- 사전에 Preflight 요청이 가능한지 확인되면 실제 요청을 보내는 방식
- Request 에 포함되어야 하는 정보
- Origin - 요청 출처
- Aceess-Control-Request-Method - 실제 요청의 메서드
- Access-Control-Headers - 실제 요청의 추가 헤더
- Response 에 포함되어야 하는 정보
- Access-Control-Allow-Origin - 허가 출처
- Access-Control-Allow-Methods - 허가 메서드
- Access-Control-Allow-Headers - 허가 해더
- Access-Control-Max-Age - Preflight 응답 캐시 시간