거인의 코딩일지
[Annotation] @CrossOrigin 이란? 본문
728x90
@CrossOrigin 이란?
- CORS(cross - origin resource sharing)
- 웹 페이지에서 제한된 자원을 외부 도메인에서 접근을 허용해주는 매커니즘
- 서로다른 도메인에서 리소스를 공유하는 방식
- 기존의 same - origin policy (동일 출처 정책) 와 반대되는 개념
- 처음 전송되는 리소스의 도메인과 다른 도메인으로 부터 리소슥가 요청 될 경우 해당 리소스는 cross- origin HTTP 요청
- ex) http:www.heowc.com 이라는 사이트에서 사용하는 api 가 있는데 해당 api 는 외부에 공개하려는 목적이 아니라 자신들의 사이트에서 사용하기 위해 만들어 졌고 이 api 를 다른 사이트에서 알게되어 허락없이 무단으로 가져가 사용하게 된다면 상당히 곤란하기에 나온것이 Same - origin Policy 정책이다. 프로토컬 , 도메인, 포트가 모두 같을 시 동일 출처 정책을 따르는 것이다.
- 보통 api 를 사용할 때 ajax 를 사용하는데 same-origin policy 를 따르지 않을 경우 오류가 나면서 api 사용이 거절 됨
- 하지만 이 정책이 마냥 좋은 것은 아니다. 만약 한 사이트에서 여러 도메인을 가지고 있을 경우 문제가 발생하는데 단지 도메인만 다를 뿐 똑같은 서비스라고 하더라도 동일 출처 정책을 따르지 않기 때문이다.
해결방법은 JSONP(Json with Padding) 방식이 있다. (client 측 처리)
- js, css 등 의 파일은 same - origin policy 를 따르지 않아도 되기 때문에 서버에서 값을 돌려 줄 때 마치 js 파일 처럼 값을 돌려주고 클라이언트 에서는 이 값을 콜백 함수로 재처리하여 사용한다.
다른 방식은 서버에서 cors 설정을 해주는 방법이다. (Server 측 처리)
- @CrossOrigin 어노테이션은 cors 를 스프링을 통해 설정할 수 있는 기능이다.
- @CrossOrigin 어노테이션을 붙여주면 기본적으로 '모든 도메인, 모든 요청방식' 에 대해 허용한다는 뜻
- 특정 도메인만 허용하고자 한다면 @CrossOrigin 어노테이션의 properties중 origins를 사용해야 한다.
- origins 는 허용할 도메인을 나타내고 복수개일 경우 콤마로 구분하여 넣어주면 된다.
참고 문헌
https://velog.io/@modsiw/Spring-CrossOrigin-Annotation-%EC%A0%95%EB%A6%AC
[Spring] CrossOrigin Annotation 정리
웹 페이지의 제한된 자원을 외부 도메인에서 접근을 허용해주는 매커니즘서로 다른 도메인에서 리소스를 공유하는 방식기존의 있던 Same-origin policy(동일 출처 정책)와 반대되는 개념으로 보면
velog.io
728x90
'코딩 > JAVA' 카테고리의 다른 글
[Spring boot] Swagger API 연동하기 (0) | 2023.10.06 |
---|---|
[Spring] 다양한 의존성 주입 방법 (0) | 2023.09.27 |
[Query_DSL] Query_DSL 이란??? (0) | 2023.09.25 |
[JPA_Query DSL] BooleanBuilder, BooleanExpression 차이 (0) | 2023.09.25 |
[JPA] N+1 문제?? (2) | 2023.08.31 |