CORS (Cross-Origin Resource Sharing) 는서로 다른 도메인간에 자원을 공유하는 것을 의미하며,
교차출처 리소스 공유 라고도 부른다.
CORS 를 설정해주지 않거나 제대로 설정하지 않으면, 원하는 리소스를 공유할 수 없다.
CORS 가 생긴 이유는 동일 출처 정책인 SOP (Same Origin Policy) 의 한계를 보완하기 위해서 생겼다.
SOP는 동일한 출처의 리소스에만 접근하도록 제한 하는 것을 의미한다.
출처는 프로토콜, 호스트명, 포트를 의미하는데 예를 들어보면 아래와 같다.
https://www.naver.com:80 이라고 하면, https 는 프로토콜 , naver.com 은 호스트명 , 80 은 포트번호이다.
만약 동일한 출처가 아닌 모든 출처를 허용하게 되면 보안에 문제가 생기게 된다.
네이버에서 로그인을 한 후, 해커가 만든 https://haker.com 라는 도메인 사이트에 접속하게 되면 유저가 획득한 인증 토큰이 자동으로 첨부되어 해커가 사용자인 척하면서 요청을 보낼 수 있게 된다.
CORS 는
도메인, 프로토콜, 포트 번호가 단 하나라도 다를 경우 출처가 다른 교차출처라고 판단해,
브라우저에서는 보안 때문에 Coress-Origin HTTP 요청을 제한한다.
대부분의 브라우저에서는 이를 기본적으로 차단하며,
권한을 부여 받기 위한 Cross-Origin 요청은 서버에서 허가를 받아야하는데, 서버측에서 헤더를 통해서 사용가능한 자원을 알려준다.
출처를 비교하는 방법은 URL 구성요소 중 프로토콜, 호스트 , 포트 이렇게 3가지가 동일한지 확인한다.
모두 같으면 같은 출처로 인식하며, 하나라도 다를 경우 교차출처 요청을 실행한다.
모든 블로그가 비슷해서 잘 정리되어있는 블로그를 남겨두고 필요할 때 적용해볼 예정.
CORS 의 해결방법은 아래 블로그를 참고.
https://dev-pengun.tistory.com/entry/Spring-Boot-CORS-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
'Knowledge > CS' 카테고리의 다른 글
[CS] 대칭키 암호화, 비대칭키 암호화 (0) | 2022.11.29 |
---|---|
[CS] OSI 7 계층 , TCP/IP 4 계층이란? (1) | 2022.11.27 |
[CS] RESTful API 란 무엇인가 (0) | 2022.11.22 |
[CS] HTTP 메서드와 하는 역할은 무엇일까? (1) | 2022.11.22 |
[CS] GET 과 POST의 차이점 (0) | 2022.11.18 |
댓글