2023. 2. 25. 01:15ㆍ개발일지
CORS (Cross-Origin Resource Sharing)
출처가 다른 자원들을 공유한다는 뜻으로, 한 출처에 있는 자원에서 다른 출처에 있는 자원에 접근하도록 하는 개념입니다. 직역하면, 교차되는 출처 자원들의 공유입니다. 다른 출처에 있는 자원을 요청한다고 하면, 이를 교차 출처 요청이라고 부릅니다.
CORS가 필요한 이유
출처가 다른 두 개의 어플리케이션이 마음대로 소통하는 환경은 위험한 환경입니다. 웹에서 돌아가는 클라이언트 애플리케이션은 사용자 공격에 매우 취약하며, 개발자 도구만 열더라도 DOM, JavaSript코드 등 각종 통신 정보를 쉽게 열람할 수 있습니다. 이를 통해서 사용자가 악의를 가지고 다른 사이트로 본 사이트를 모방할 수 있으며, 이렇게 다른 출처의 어플리케이션이 통신하는 것에 제약이 없다면, 기존 사이트와 동일하게 동작하여 사용자의 정보가 탈취되기 쉬워집니다.
CORS가 동작하는 원리
웹 애플리케이션이 다른 출처의 리소스에 접근할 때는 HTTP header에 요청을 보냅니다. HTTP 프로토콜을 사용하여 요청을 보내며, 요청 헤더에 Origin 필드에 요청을 보내는 출처를 담아서 보냅니다.
Origin : https://google.com
이후 서버가 이 요청에 대한 응답을 할 때 응답 헤더의 Access-Control-Allow-Origin 이라는 값에 "리소스 접근이 허용된 출처"를 내려주고, 응답을 받은 브라우저는 자신이 보낸 Origin과 서버가 보내준 응답인 Access-Control-Allow-Origin을 비교하고 유효한 응답인지 확인합니다. 만약 유효하지 않으면 그 응답을 사용하지 않습니다.
CORS 해결하기
Access-Control-Allow-Origin 세팅
가장 대표적인 방법은 서버에서 Access-Control-Allow-Origin 헤더에 알맞은 값을 세팅하는 것입니다.
Access-Control-Allow-Origin: https://google.com
'개발일지' 카테고리의 다른 글
02.28 TIL (0) | 2023.02.28 |
---|---|
02.27 Mini_Project 서버 및 로그인, 회원가입 기능 구현(CORS 문제 해결) (0) | 2023.02.27 |
02.19 ORM / SQL / MVC (0) | 2023.02.20 |
02.18 Transaction (0) | 2023.02.18 |
02.18 Spring Test (0) | 2023.02.18 |