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 |
댓글