본문 바로가기
학습/Spring

[spring] 스프링 웹 MVC의 CORS 지원

by KKambi 2020. 5. 3.

CORS?

Cross-Origin Resource Sharing

  • SOP(Single-Origin Policy)를 우회하기 위한 기술
  • SOP는 같은 오리진에만 요청을 보낼 수 있는 정책
  • CORS는 다른 오리진끼리 리소스를 공유할 수 있는 방법을 제공하는 표준
  • 아무 설정 없으면 SOP 적용

 

Origin?

  • URI Schema + HostName + Port
    1. URI Schema = http / https
    2. HostName = localhost / kkambi.me / comic.naver.com의 comic
    3. Port = 8080 / 8090 / 80 / 443
  • SOP가 적용되어 있는 경우
    • localhost:80에서 구동되는 웹 어플리케이션이, localhost:8080에서 구동되는 REST API를 호출할 수 없음

 

@CrossOrigin

CORS 적용해주는 어노테이션

  • 메소드에 적용
  • 컨트롤러에 적용
  • 웹 설정 파일에서 글로벌하게 적용
1
2
3
4
5
6
7
8
9
10
//REST API가 구동되는 localhost:8080의 설정
@RestController
@CrossOrigin(origins = "http://localhost:80")
public class SampleController(){
    
    @GetMapping("/sample")
    public Sample sample(){
        return new Sample();
    }
}
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
@Configuration
public class WebConfig implements WebMvcConfigurer{
 
    @Override
    public void addCorsMappings(CorsRegistry registry) {    
        registry.addMapping("/sample/**")
                .allowedOrigins("*")
                .allowedMethods(HttpMethod.GET.name())
                .allowCredentials(false)
                .maxAge(3600);
    }    
}
cs

 

 

cf) Hostname VS Domainname

host

  • 사용자의 요청에 맞춰 리소스를 제공하는 호스트 컴퓨터(웹서버)
  • 특정 그룹에 속한 특정 컴퓨터

domain

  • IP를 대표하는 이름
  • 그룹

 

가비아 라이브러리의 친절한 표!

호스트 IP

호스트명 도메인명

역할

211.115.83.234

www gabia.com 홈페이지 서버(웹서버)

211.115.83.217

domain

도메인 서버

211.115.83.214

hosting

호스팅 서버

211.115.83.194

whois WHOIS 서버

121.254.168.215

inmail

메일 서버

211.115.83.204

ftp 파일 전송 통신 서버

211.115.83.210

freehome

홈페이지 서버

211.234.118.50

ns

도메인 네임 서버

121.78.117.39

ns1

도메인 네임 서버

 

 

참고

http://library.gabia.com/contents/domain/4005

https://m.blog.naver.com/PostView.nhn?blogId=fdoxcl453&logNo=130073618650&proxyReferer=https:%2F%2Fwww.google.com%2F

댓글