웹 개발에서 다양한 도메인의 리소스를 사용하기 위해 필수적으로 알아야 할 개념 CORS!
위 사진은 CORS의 특성과 하는 역할을 아주 잘 묘사하는 짤이라고 생각된다.
CORS를 배우고 Cookie에 대해 학습하다 보면,
처음 보는 Cors option을 발견하게 된다.
Credentials: true
요 녀석은 어떤 옵션이고 왜 필요한 것일까?
일단 시간이 없는 사람을 위해 한 마디로 설명하겠다.
클라이언트와 서버 간에 쿠키를 주고받고 싶으면 그냥 저 옵션을 넣으세요.
자 아래는 왜 그런지 이유를 설명해 보겠다.
기본적으로, CORS는 cross-origin 요청에는 쿠키를 담아 데이터를 전송하지 않는다. Json-P의 경우 항상 요청에 쿠키를 담아 보낸다는 점에서 CORS와 차이점이 있는데 이처럼 쿠키를 항상 담아 보내게 되면 CSRF 공격에 취약해질 수 있으니 주의해야 한다.
CORS에서는 CSRF 공격의 위험을 낮추기 위해 서버와 클라이언트 두 쪽 모두에게 쿠키가 요청에 담겨도 되는지 확인하는 작업을 거친다.
따라서 클라이언트와 서버 모두에서 credentials: true 값이 설정되어 있지 않다면 기본 설정에 의해서 요청의 헤더에서 쿠키를 찾을 수 없게 되는 것이다.

'Back-End > Server' 카테고리의 다른 글
[Web server] Apache vs NginX (0) | 2023.09.19 |
---|---|
Server App server VS Web server (0) | 2021.11.24 |