- cors는 cross origin resource sharing의 줄임말로 쉽게 말하면 서버의 주소와 다른 도메인과 서버가 소통하게끔 하는 설정이다 !
- Preflight Request : 실제 request를 보내기에 안전한지 판단하기 위해 보내는 요청
- 인증 헤더를 전송해 서버가 이를 허용하는 지 체크하는 테스트 요청이다
- 즉 서버의 cors옵션이 자신을 허용하는지 확인하는 것
- 실제 요청을 보낼 uri에 option method로 요청을 보내고 서버가 리턴해준 허용 method, 헤더, 쿠키 허용여부 등을 받고 이를 바탕으로 실제 요청을 보낸다.
- GET,HEAD,POST(Content-type 이 application/x-www-form-urlencoded, multipart/form-data, text/plain 인 경우) 혹은 custom header를 추가하지 않은 경우 preflight없이 actual만 요청된다고 함
- Credetial이란 쿠키, Authorization 인증 헤더, TLS client certificates(증명서)를 내포하는 자격 인증 정보를 말한다.
- 기본적으로 cors요청으로 쿠키를 설정하거나 보낼 수 없음
- 클라이언트,서버 모두 credetial 부분을 true로 설정해주어야 쿠키나 인증 헤더를 포함시킬 수 있다
source.setAllowCredentials(false); //쿠키 받을 것 인지 설정 source.setAllowedOrigins(Arrays.asList("<http://localhost:3000>","<http://localhost:8080>"));
- setAllowCredentials을 true로 설정하여 쿠키를 수신 받는다면, 허용할 origin을 설정해주어야 함
- 위처럼 허용할 주소를 직접 입력해야 함(보안상 “*” 이렇게 쓰면 오류를 띄운다)
- 물론 클라이언트에서도 허용하고 전송해야 함!
참고자료
http://wiki.gurubee.net/display/SWDEV/CORS+(Cross-Origin+Resource+Sharing)
https://inpa.tistory.com/entry/AXIOS-📚-CORS-쿠키-전송withCredentials-옵션
'Spring' 카테고리의 다른 글
[Spring Boot] SMTP를 이용해 이메일 인증을 구현해보자 (0) | 2023.04.17 |
---|---|
Spring Batch (0) | 2023.04.05 |
ExceptionHandling (0) | 2023.04.05 |
What is JWT?? (2) (With OAuth2.0) (0) | 2023.04.05 |
What is JWT??(1) (0) | 2023.04.05 |