일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 시퀀스 조회
- 명령어
- js
- 개발시작전 자세
- it
- JSON
- 추천 프로그램
- 스프링부트
- 비밀번호 변경 명령어
- 타임리프
- cmd
- Test 룸북 사용하기
- 추천 사이트
- 룸북
- 다른사람 프로젝트 수정전 가져야할 자세
- #{..}
- StringUtils.hasText
- 함수 인자값 id
- 프로젝트 클린
- 순서 보장
- 하모니카 OS 5
- 리눅스
- 설정
- BindingResult
- Intellij
- Java
- select
- linux
- 타임리프와 스프링
- 자바스크립트 인라인
Archives
- Today
- Total
웹개발 블로그
CORS 해결하기, 3가지 방법 본문
CORS
- 에러나 오류가 아니다.
- Cross-Origin Resource Sharing Policy이다.
- Front와 Back을 나눌때 개발을 할 때에는 단순히 Front에서 fetch 요청으로 Back을 바라보고 날리면 될줄 알았는데
- 하나의 보안 정책이다.
- 현재 IP가 아닌 다른 IP로 리소스를 요청하는 구조
발생하는 이유는?
- Origin
- 요청이 시작된 서버의 위치를 나타내는 문구
- Client 서버 ( http://client:80 )
- 로그인 API 서버 ( http://login:3000)
- 이 2개의 IP는 서로 다른 IP의 번호를 가짐. 클라이언트 서버가 로그인 서버에게 HTTP 요청을 보낼 때 Origin이 다르다. ( 이를 Cross Origin )
- Origin을 구분할 때는 3가지를 이용한다.
- 스키마
- HOST
- Port
- https://tistory:80 경로가 있다면 여기에 스키마, host, Post 모두가 포함
- https : 스키마
- tisotry : Host
- 80 : Port
- https://tistory:80 경로가 있다면 여기에 스키마, host, Post 모두가 포함
- 요청이 시작된 서버의 위치를 나타내는 문구
- SOP
- Same Origin Policy
- 보안정책으로 동일한 출처의 Origin만 리소스를 공유할 수 있다.
- SOP 때문에 사실상 CORS 문제 허덕인다고 해도 과언이 아니다.
- SOP 표준에 따라야지 XX라던지 CSRF라는 보안상의 ISSUE를 막을 수 있게 된다.
- Access-Control-Allow-Origin
- Access-Control-Allow-Origin은 바로 CORS를 해결할 수 있다.
- SOP 정책에 따라서 같은 Origin의 자원만 공유 가능했지만, Access-Control-Allow-Origin 덕분에 서로 다른 Origin에서 자원 공유가 가능해진다.
CORS 동작 방식
🔽Cross Origin에서 자원을 요청하기 위한 과정
- HTTP 통신 헤더인 Origin 헤더에 요청을 보내는 곳의 정보를 담고 서버로 요청 보내기
- 이후 서버는 Access-Control-Allow-Origin헤더에 허용된 Origin이라는 정보를 담아 보내기
- 클라이언트는 헤더의 값과 비교해 정상 응답임을 확인하고 지정된 요청 보내기
- 서버는 요청을 수행하고 200OK 코드를 응답
참조 : https://wonit.tistory.com/307
3가지 방법
@CrossOrigin(origins = “허용주소:포트”)
[Spring Boot] CORS 를 해결하는 3가지 방법 (Filter, @CrossOrigin, WebMvcConfigurer)
Server Side Template 방식이 아닌 Front와 Back 으로 나눠서 인프라를 구성해본 경험이 있는 사람들에게는 Cors가 매우 친숙할 수 있다. 현재 개발 흐름에서 웹 프로젝트를 진행하다가 Cors 를 만날 확률은
wonit.tistory.com
+
https://jmlim.github.io/spring/2018/12/11/spring-boot-crossorigin/
스프링 부트에서 크로스도메인 이슈 처리하기. (@CrossOrigin 어노테이션을 사용) · 기억하기 위한
스프링 부트에서 크로스도메인 이슈 처리하기. (@CrossOrigin 어노테이션을 사용) 11 Dec 2018 | Spring CORS Cross Domain 크로스도메인 이슈란? Ajax 등을 통해 다른 도메인의 서버에 url(data)를 호출할 경우 XMLH
jmlim.github.io
'◆ 공격과 방어 기법' 카테고리의 다른 글
CSRF 공격과 방어 기법 (0) | 2024.10.28 |
---|