cors에 대해서

김한솔·2022년 11월 8일

CORS(Cross Origin Resource Sharing)란 무엇일까?

다른 출처에서의 리소스 요청을 막는 것이라고 간단하게 생각했는데
사실은 SOP(Same Origin Policy)를 따르기 위해 교차 출처의 리소스 접근을 허용해주는 것이 맞는 말인 것 같다.

구글에 검색해보면 아래와 같은 설명이 나온다.

보안상의 이유로 브라우저는 스크립트에서 시작된 교차 출처 HTTP 요청을 제한합니다. 예를 들어 XMLHttpRequestFetch API 는 동일 출처 정책을 따릅니다 . 즉, 다른 출처의 응답에 올바른 CORS 헤더가 포함되지 않는 한 해당 API를 사용하는 웹 애플리케이션은 애플리케이션이 로드된 동일한 출처의 리소스만 요청할 수 있습니다.

서버가 아닌 브라우저에서 일어나는 일이기 때문에 서버에서 정상적인 응답을 해주어도 브라우저가 그 응답을 CORS위반이라고 분석하면 CORS에러가 발생하게 된다.
CORS를 정확히 이해하지 못하면 어느 부분에서 에러가 났는지 찾는데 문제가 생길 수 있을 것이다.

CORS 작동 방식

1.예비요청

요청을 한 번에 보내지 않고 예비요청(preflight)을 먼저 보내서 origin을 먼저 확인(request의 origin과 response의 Access-Control-Allow-Origin을 비교)한 뒤 본 요청을 보내는 방식.

2.단순요청

예비요청을 보내지 않고 바로 본 요청을 보낸 후 CORS정책 위반 여부를 확인하는 방식./

3.인증된 요청

예비요청보다 보안을 더 강화하고 싶을 때 사용한다.
요청에 인증과 관련된 정보(쿠키)를 담을 수 있게 해주는 옵션인 credentials 옵션을 사용한다.
profile
개린이입니다.

0개의 댓글