일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- remove
- HashCode
- makeus
- Hackathon
- forloop
- 이코테
- 딕셔너리
- 우아한테크코스
- 동일성
- JWT
- 우테코
- CMC
- equlas
- 컴공선배
- 라이징캠프
- CICD
- 나동빈
- 왕실의나이트
- ssh-action
- loop
- object
- 이것이취업을위한코딩테스트다
- 동빈북
- 동등성
- 너디너리
- Signature
- nestJS
- 해커톤
- Payload
- github action
Archives
- Today
- Total
작지만 꾸준한 반복
CORS 본문
CORS란?
MDN의 정의
CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유)는, 추가 HTTP 헤더를 사용하여 한 URL에서 실행 중인 웹 App이 다른 URL의 선택된 resource에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다
죽어도 양반은 못되나보다. 교과서스러운 정의가 맘에 안든다....
내 블로그니까 내 맘대로 정리한다
CORS는 왜 존재하는가?
- 브라우저(프론트)가 약속돼있던 서버가 아닌 다른 서버는 믿지 못하기 때문
- 내가 iamjooon2.com의 호스트일때, 브라우저 입장에서 개발하고 있는 사이트 외에 다른 수상한 웹이다..
- (실제로 예전같은 경우, 다른 웹에서 자원을 떙겨쓸 일이 매우 적었다고 함)
- 하지만 웹이 발달하며, 여러 웹끼리 서로 데이터를 주고받아야 하는 일들이 많이 생김
- 그래서 생겨난 것이 바로 이 CORS! 여러 출처끼리 리소스를 주고받게 해준다
CORS는 어떻게 동작하는가?
- 브라우저가 원래 출처(resource)가 아닌 다른 출처에다가 request을 보낼때
- header에 Origin이라는 넘을 추가해준다
- request를 받은 서버는 response를 보내주는데
- response의 header에 지정된 해당 출처(서버 입장에서 브라우저)를 허용한다는 내용를 담아서 브라우저로 보내준다
- 브라우저는 request의 header와 response의 header를 비교하여 origin에 추가해준 내용이 있으면 안전한 요청으로 간주,
리소스를 받아온다
내맘대로 정의
- 서로 다른 출처끼리 정보 요청과 반환이 가능하도록 하는 하는 것
내맘대로 예
- 내 웹에서 네이버 지도의의 API를 사용하고 싶을 때...
- 브라우저에서는 내 웹이 아닌 다른 리소스는 신뢰하지 않아서 리소스 공유를 막아버림.
- 이 정책이 SOP(Same Origin Policy)고 이걸 가능하게 풀어주는 것이 CORS
해결 방법
서버에서 Access-Cross-Origin Header를 심어 넣어준다
추가 개념들
SOP(same origin policy, 동일 출처 정책)
같은 URL에서만 API 같은 데이터 접근이 가능하도록 하는 정책.
이 정책 때문에 다른 웹끼리 데이터를 공유하려 할 땐 CORS를 이용하여 풀어줘야함
출처(Origin)
대충 URL의 개념
자원(Resource)
직역 그대로 자원
그냥 주고받는 데이터
scheme
요청한 자원에 접근할 방법, 프로토콜
Access-Control-Allow-Origin
다른 출처에서 req를 받은 서버가 res 보낼때 헤더에 넣어주는 “ㅇㅋ 거기는 약속되있던거임. 허락하노라”이라는 뜻의 헤더.
References
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
https://www.youtube.com/watch?v=7iGIfcEsc2g&t=604s&ab_channel=%EC%9A%B0%EC%95%84%ED%95%9CTech