CORS?
Cross-Origin Resource Sharing
- SOP(Single-Origin Policy)를 우회하기 위한 기술
- SOP는 같은 오리진에만 요청을 보낼 수 있는 정책
- CORS는 다른 오리진끼리 리소스를 공유할 수 있는 방법을 제공하는 표준
- 아무 설정 없으면 SOP 적용
Origin?
- URI Schema + HostName + Port
- URI Schema = http / https
- HostName = localhost / kkambi.me / comic.naver.com의 comic
- 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 |
도메인 네임 서버 |
참고
'학습 > Spring' 카테고리의 다른 글
[spring] 스프링 부트에서 MySQL과 PostgreSQL 사용하기 (0) | 2020.05.06 |
---|---|
[spring] 스프링 부트에서 JDBC와 In-memory DB 사용하기 (0) | 2020.05.05 |
[spring] 스프링 부트의 Hateoas 지원 (2) | 2020.05.03 |
[spring] 스프링 웹 MVC의 ExceptionHandler (0) | 2020.04.26 |
[spring] 스프링 웹 MVC의 동적 리소스 지원 (Thymeleaf) (0) | 2020.04.25 |
댓글