Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/02   »
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
Tags
more
Archives
Today
Total
관리 메뉴

거인의 코딩일지

[Annotation] @CrossOrigin 이란? 본문

코딩/JAVA

[Annotation] @CrossOrigin 이란?

코딩거인 2023. 9. 25. 10:13
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