-
CORS 에러 정리(2)_시나리오WEB & CS 2023. 8. 11. 19:00
CORS 시나리오
1. simple request
- Prefilght를 생략하고 바로 서버에 요청을 보내서 CORS에러 검사
- 3가지 조건이 만족해야한다.
- 요청은 GET, HEAD, POST 메서드 중에 하나
- Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width 헤더일 경우 에만 적용된다.
- Content-Type 헤더가 application/x-www-form-urlencoded, multipart/form-data, text/plain중 하나여야한다.
2. preflight request
- 브라우저는 서버로 HTTP OPTIONS 메소드로 예비 요청(Preflight)을 먼저 보낸다.
- Origin 헤더에 자신의 출처를 넣는다.
- 헤더에 실제 요청에 사용할 메소드와 헤더들을 설정한다.
- Access-Control-Request-Method / Access-Control-Request-Headers
- 서버는 제한 목록을 Header 정보에 담아 브라우저에 보내준다.
- 허용되는 Origin, 메소드, 헤더,예비 요청이 브라우저에 캐시될 수 있는 시간을 보내준다.
- Access-Control-Allow-Origin / Access-Control-Allow-Methods / Access-Control-Allow-Headers / Access-Control-Max-Age
- 캐시 시간이 만료될 때까지는 예비 요청이 서버에 전달되지 않고 캐시된 응답을 사용한다.
- 허용되는 Origin, 메소드, 헤더,예비 요청이 브라우저에 캐시될 수 있는 시간을 보내준다.
- 서버의 응답과 비교해 안전한 요청인지 확인 후 본 요청을 보낸다.
- 본 요청의 서버 응답을 자바스크립트로 넘겨준다.
3. credentialed request
- 클라이언트에서 서버에게 쿠키(Cookie)혹은 Authorization헤더에 설정하는 토큰 값등을 실어 요청할때 사용되는 요청
- 요청에 인증과 관련된 정보를 담을 수 있게 해주는 credentials 옵션을 사용
- 응답의 Access-Control-Allow-Origin 헤더가 와일드카드(*)가 아닌 분명한 Origin으로 설정되어야 하고, Access-Control-Allow-Credentials 헤더는 true로 설정되어야 한다.
출처)
'WEB & CS' 카테고리의 다른 글
Sync & Async & Blocking & Non-Blocking (0) 2023.08.11 자료구조 시작 전 사전지식_linkedList (0) 2023.08.11 CORS 에러 정리(1) (0) 2023.08.11 properties파일에서 설정한 변수 jsp에서 사용하기 (0) 2023.08.11 알고리즘 시간 복잡도(Time Complexity) (0) 2023.04.25