CORS란 교차 출처 리소스 공유의 약자로 다른 출처(도메인)에서 실행중인 웹 어플리케이션의 접근권한을 부여하도록 하는 체제이다.
예를 들어
A-(이미지 요청)->A (같은 도메인이기 때문에 허가)
B-(이미지 요청)->A (다른 도메인이기 때문에 접근 비허가)
이다.
근데 대부분의 경우 다른 도메인에서 자료를 요청하는 경우가 많다.
CSS의 경우 웹 폰트
그렇기 때문에 CORS를 잘 알아야 한다.
preflight란? 실제 요청 전송전 전송이 안전한지 미리 확인하는 것
@Configuration과 @ㄷEnableWebSecurity가 적용된 class에 CorsConfigurationSource를 반환하는 @bean 클래스를 정의한다.
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
//모든 경로에서 허용
//Access-Control-Allow-Origin
configuration.addAllowedOriginPattern("*");
//모든 헤더 허용 (Content-type등)
//Access-Control-Allow-Header
configuration.addAllowedHeader("*");
//Access-Control-Allow-Method설정
configuration.addAllowedMethod("*");
//내 서버가 응답을 할 때 json을 자바스크립트에서 처리할수 있게 할지를 설정
//요청에 인증 정보 (쿠키(Cookies),HTTP 인증 정보(HTTP Authentication),클라이언트 SSL 인증서(Client-side SSL certificates)를 포함시킬지 여부
configuration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
를 해주면 사용할 수 있다.