CORS
에 대해 알아보려다가SOP
까지 정리하게 되었네요.- 이 포스팅은 우아한Tech의 [Youtube] 10분 테코톡 🌳 나봄의 CORS을 보며 정리하였습니다.
Same Origin Policy, 동일 출처 정책
- 다른 출처의 리소스를 사용하는 것에 제한하는 보안 방식
https
프로토콜이 다르다.http
기본포트가 80이다.String Value
를 비교하기 때문에 다른 출처라고 판단한다.api/cors
는 추가적으로 붙는 location
이다. api 앞에까지만 비교해서 동일 출처로 판단한다.선량한 사용자
가 인증 토큰을 가지고 있다.해커
가 흥미진진한 내용과 링크를 메일을 통해 보낸다.선량한 사용자
가 링크를 타고 들어가면서 이미 작성된 스크립트의 내용이 실행이 된다.해커
는 선량한 사용자
의 인증 토큰을 가지고 페이스북에 게시물을 올리는 해킹이 가능하다.하지만 SOP가 있다면?
- Cross Origin 이라 판단되면 SOP 에 위반되기 때문에, 이 요청은 받아들일 수 없다라고 판단하게 된다.
그렇다면 다른 출처의 리소스가 필요하다면 어떻게 할까?
Cross-Origin Resource Sharing, 교차 출처 리소스 공유
- 다른 출처의 자원을 공유
교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)
는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다.
쉽게 말해 사전 확인하는 작업
ex) 친구야, 나 너희집에 오늘 놀러가도 돼?
ex) 어이, 서버 나 요청 보내도 돼?
Preflight 요청 없이 바로 요청을 날린다.
다음 조건을 모두 만족해야 사용이 가능합니다.
그냥 Simple Request 로 보내면 안되나?
CORS 를 모르는 서버를 위해서다.
만약 단순한 GET 요청이 아닌 DELETE 요청이라면 이미 서버에서 모든 처리를 하고 CORS 에러를 띄우는데, 에러를 이미 볼 땐 서버의 모든 데이터베이스가 삭제되어 버린 상황 😱
그렇기 때문에 Preflight 가 필요한 상황이다.
인증 관련 헤더를 포함할 때 사용하는 요청이다.
[mozilla] 교차 출처 리소스 공유 (CORS)
[Youtube] 10분 테코톡 🌳 나봄의 CORS
[Youtube] 웹개발 짜증유발자! CORS가 뭔가요?
잘못된 정보가 있으면 언제든 코멘트 부탁드립니다 👻