일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 누적합
- union find
- OrderBy
- BFS
- SQL코딩테스트
- 최단경로
- 알고리즘
- 프림
- SQL
- 다익스트라
- Java
- django
- 크루스칼
- 피로그래밍
- 배포
- MST
- 백준
- JOIN
- 그래프 탐색
- db
- 구현
- 코딩테스트
- 프로그래머스
- 자바
- Baekjoon
- AWS
- Database
- EC2
- GROUPBY
- Pirogramming
Archives
- Today
- Total
NullNull
CORS (Cross Origin Resource Sharing) 본문
SOP Same Origin Policy
- 원래 같은 출처끼리만 정보 공유를 허용하는 정책
- 서버단에서 일어나는 것이 아니라 브라우저단에서 실행되는 정책 : 즉 서버는 Origin과 상관 없이 정상적인 요청이면 200 OK와 함께 응답. 브라우저가 유효성을 식별하게 됨
- 예외 처리 → CORS (Cross Origin Resource Sharing)
CORS (Cross Origin Resource Sharing)
기본적으로 웹 클라이언트 어플리케이션이 다른 출처에 리소스를 요청할 때는 HTTP 프로토콜을 사용하여 요청을 보내는데, 이 때 브라우저는 요청 헤더에 Origin이라는 필드에 출처를 함께 담아 보낸다.
서버는 정보를 응답하면서 이 리소스에 접근하는 것이 허용된 출처를 Access-Control-Allow-Origin 필드의 값으로 보내주고, 브라우저가 자신의 Origin과 서버의 Access-Control-Allow-Origin 값을 비교해서 응답의 유효성을 평가한다.
같은 출처인지 파악하는 방법
- scheme
- host
- port
- 3개가 같은지 확인한다.
http://a.com:8000 과 특정 도메인이 같은 출처인지 파악해보자
//같은 출처가 아니다. scheme이 다르다.
https://a.com:8000
//같은 출처이다.
http://a.com:8000?id=hello
//같은 출처가 아니다. host가 다르다.
https://ab.com:8000
//같은 출처가 아니다. port가 다르다.
http://a.com:7392
CORS의 동작 방법
- Preflight Request
- 실제 데이터 전송 전에 먼저 외부 접속을 허용하는지 체크를 하기 위해 브라우저 단에서 전송을 미리 해봄
- Simple Request
- 실제 데이터 전송과 Origin Check를 동시에 수행. 근데 조건이 있음
- 메소드가 GET, POST, HEAD 여야함
- Header로 사용할 수 있는 친구들이 정해져 있음
- Content-Type이 정해져 있음
- 실제 데이터 전송과 Origin Check를 동시에 수행. 근데 조건이 있음
- Credentialed Request
- 요청 + 알파로 인증 정보 요청 까지
- same-origin, include, omit
CORS 발생 시 해결 방법
- 서버에서 해결하기
- 응답을 보낼 때, Access-Control-Allow-Origin 헤더 값에 알맞는 값을 세팅한다.
- 프레임워크 등에서 이를 세팅해주는 미들웨어를 활용할 수 있다.
- 클라이언트(브라우저)에서 해결하기
- 웹 브라우저 실행 옵션이나 플러그인을 설정으로 동일 출처 정책을 우회한다.
- jsonp 방식으로 json 데이터 가져오기
- 자바스크립트 파일이나 css 파일은 동일 출처 정책에 영향을 받지 않고 가져올 수 있다.
- 이를 이용하여 자바스크립트 파일을 가져와서 이를 json 형식으로 파싱해 데이터를 사용할 수 있다.
'Computer Science' 카테고리의 다른 글
Domain Name System (0) | 2022.11.29 |
---|---|
네트워크 지연(Network Delay) 의 종류 (0) | 2022.11.11 |
OSI 7계층 && Internet 5 계층 (4) | 2022.10.03 |
멀티 프로그래밍, 멀티 태스킹, 멀티 쓰레딩, 멀티 프로세싱 (0) | 2022.09.29 |
산업보안 관점에서 고려되어야 할 보안 요소 및 보안 대책 (0) | 2022.09.29 |
Comments