본문 바로가기
Spring Boot

CORS

by 상국이 2022. 2. 28.
728x90

SOP

 > Single-Origin Policy

 > 같은 Origin에서만 요청을 보낼 수 있음

 

CORS

 > Cross-Origin Resource Sharing 

 > 서로 다른 Origin끼리 Resource를 공유할 수 있음(요청을 보낼 수 있음)

 > SOP를 우회하기 위한 표준 기술

 

Origin

 : 아래 세 요소를 합친 것

  • URI 스키마(ex. http, https)
  • hostname(ex. localhost)
  • port(ex. 8080) 

* spring boot에서 아무런 설정없이 CORS를 사용할 수 있는 환경을 제공

 

예제)

Controller

@SpringBootApplication
@RestController
public class SpringcorsserverApplication {

    @GetMapping("/hello")
    @CrossOrigin(origins = "http://localhost:18080")        //CORS를 허용할 origin
    public String hello(){
        return "hello";
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringcorsserverApplication.class, args);
    }

}

* 여러 controller에서 사용하고자 하는 경우 아래와 같이 사용 가능

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/hello")           //"**"로 설정하는 경우 전부 다
//                .allowedOrigins("http://localhost:18080");
                .allowedOriginPatterns("http://*");        //패턴을 지정할 수도 있음
    }
}

 

요청할 server의 index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>안녕 나는 첫 화면이야</h1>
<script src="/webjars/jquery/3.3.1/dist/jquery.min.js"></script>
<script>
    $(function(){
        $.ajax("http://localhost:8080/hello")
            .done(function (msg) {
                alert(msg);
            })
            .fail(function(){
                alert("fail");
        })
    })
</script>
</body>
</html>

 

결과

728x90

'Spring Boot' 카테고리의 다른 글

DBCP  (1) 2022.03.26
인메모리 데이터베이스  (0) 2022.03.05
HATEOAS  (0) 2022.02.28
ExceptionHandler  (0) 2022.02.28
문법  (0) 2022.02.28

댓글