교차 출처 리소스 공유 (Cross-Origin Resource Sharing, CORS) 는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인
웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에
알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를
때 교차 출처 HTTP 요청을 실행합니다.
다른 출처 요청의 위험성
<img>, <script>, <frame>, <video>, <audio> 등이 웹에 등장하면서, 페이지 로딩 이후에 브라
우저에서 이러한 하위 자원들을 가져올 수 있게 되었습니다. 그러므로 동일 출처, 다른 출처 모두
호출이 가능하게 되었습니다.
CORS 정책이 없고 모든 다른 출처 요청이 가능한 브라우저를 생각해봅시다.

홈페이지를 서핑하고 있는데, <script>가 심어진 어떠한 페이지를 열었다고 생각해봅시다.
굉장히 유용한 정보를 담고 있는 사이트이지만, 페이지를 열면서 <script>가 실행되어
은행에 'Delete /account'를 요청하도록 되어 있습니다. 잘못된 호출로 은행 API를 호출하여
나의 은행 계좌를 삭제해버리는 사고가 발생합니다.
따라서, 다른 출처의 접근을 막기 위해서 동일 출처 정책이 등장했습니다.
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("<http://localhost:8080>")
.maxAge(3000);
}
}
// 모든 uri에 대해 <http://localhost:8080> 도메인은 접근을 허용한다.
// (배포시 맞는 도메인 주소로 교체)
WebMvcConfigurer를 상속 받아서 addCorsMappings를 Override하면 CORS 관련 설정이 가능합니다.
addCorsMappings ⇒ registry.addMapping을 이용해서 CORS를 적용할
URL패턴을 정의할 수 있습니다**.** "/**" 형식의 와일드 카드 또한 사용 가능합니다.
또한 Ant-style도 지원하며 "/somePath/**" 이렇게 적용할 수도 있습니다.
Default값은 아래와 같습니다.
maxAge메소드를 이용해서 원하는 시간만큼 pre-flight 리퀘스트를 캐싱 해둘 수 있습니다.