SpringBoot2. x 설정 Cors 크로스 도 메 인 상세 설명

크로스 오 버 이해
크로스 도 메 인 이란 브 라 우 저 A 가 서버 B 에서 가 져 온 정적 자원 으로 Html, Css, Js 를 포함 하고 Js 에서 Ajax 를 통 해 C 서버 의 정적 자원 이나 요청 을 방문 하 는 것 을 말한다.즉, 브 라 우 저 A 가 B 서버 에서 가 져 온 자원, 자원 에서 서버 C 의 자원 에 접근 하고 싶 습 니 다.같은 소스 정책 이란 브 라 우 저 A 가 서버 B 에서 가 져 온 정적 자원 으로 Html, Css, Js 를 포함 하여 사용자 안전 을 위해 브 라 우 저 에 제한 을 가 합 니 다. 그 중의 Js 는 Ajax 를 통 해 B 서버 의 정적 자원 이나 요청 에 만 접근 할 수 있 습 니 다.즉, 브 라 우 저 A 는 자원 을 어디서 가 져 오 면 자원 에 만 접근 할 수 있 습 니 다.같은 소스 란 같은 요청 프로 토 콜 (예 를 들 어 Http 또는 Https), 같은 Ip, 같은 포트, 세 개가 모두 같 으 면 같은 소스 입 니 다.
크로스 필드 처리
도 메 인 을 뛰 어 넘 는 이러한 수요 가 있 기 때문에 W3C 조직 은 크로스 - Origin Resource Sharing 규범 을 제 정 했 고 Cors 라 고 간략하게 썼 다. 현재 이 규범 은 대부분의 브 라 우 저 에 의 해 지원 되 어 도 메 인 을 뛰 어 넘 는 수 요 를 처리 하고 있다.Cors 는 백 엔 드 애플 리 케 이 션 에서 설정 해 야 하기 때문에 도 메 인 을 뛰 어 넘 는 백 엔 드 처리 방식 입 니 다. 이렇게 하면 이해 하기 쉽 습 니 다. 모 르 는 소스 가 응용 프로그램 에 접근 하려 면 당연히 응용 권한 을 부여 해 야 합 니 다.백 엔 드 처리 방식 을 제외 하고 전단 의 해결 방안 도 있 습 니 다. 예 를 들 어 JSONP, 여기 서 우 리 는 주로 SpringBoot2. x 가 Cors 에 대한 설정 을 설명 하기 때문에 전단 해결 방안 에 대해 상세 하 게 설명 하지 않 습 니 다.
크로스 필드 의 분류
크로스 도 메 인 은 다음 과 같은 3 가지 로 나 뉜 다.
명칭.
영문
설명 하 다.
간단 한 요청
Simple Request
시 작 된 Http 요청 은 다음 과 같 습 니 다. 1. 사용자 정의 요청 헤더 가 없습니다. 2. 요청 동 사 는 GET, HEAD 또는 POST 중 하나 입 니 다. 3. 동사 가 POST 일 때 Content - Type 은 application / x - ww - form - urlencoded 입 니 다.
multipart / form - data 또는 text / plain 중 하나
예비 검사 요청
Preflighted Request
시 작 된 Http 요청 은 그 중 하나 에 부합 합 니 다. 1. 사용자 정의 요청 헤더 가 포함 되 어 있 습 니 다. 2. 요청 동 사 는 GET, HEAD 또는 POST 가 아 닙 니 다. 3. 동사 가 POST 일 때 Content - Type 은 application / x - ww - form - urlencoded 가 아 닙 니 다.
multipart / form - data 또는 text / plain.즉, 간단 한 요청 의 반대
증빙 요청
Requests with Credential
발 표 된 Http 요청 에 증빙서류 가 있 습 니 다.
SpringBoot2. x 설정 코드
SpringBoot 2. x 는 주로 두 가지 방식 으로 Cors 를 지원 합 니 다. 다음 과 같 습 니 다.
방식.
작용 범위
설명 하 다.
@ CrossOrigin 주해
컨트롤 러 의 모든 인터페이스 나 특정한 인터페이스
특정 요청 인터페이스 설정, 맞 춤 형
WebMvcConfigurer 대상
모든 인터페이스
전역 설정 에 적용
@ CrossOrigin 주석 사용 하기
코드 인 스 턴 스
@RestController
@RequestMapping(value = "/api/users")
@CrossOrigin
public class UsersController{

    @Autowired
    private UsersService usersService;

    @PostMapping
    @CrossOrigin
    public User create(@RequestBody User user) {
        return userService.save(user);
    }
}

명칭.
유형
범위.
필수
요청 헤더 필드
value
문자열 배열
방법
예.
Access-Control-Allow-Origin
origins
문자열 배열
방법
예, 같은 value 입 니 다. 둘 중 하 나 를 선택 할 수 있 습 니 다.
Access-Control-Allow-Origin
methods
문자열 배열
클래스 또는 인터페이스
예.
Access-Control-Allow-Methods
maxAge
long
클래스 또는 인터페이스
아니.
Access-Control-Max-Age
allowCredentials
String
클래스 또는 인터페이스
아니.
Access-Control-Allow-Credentials
allowedHeaders
문자열 배열
클래스 또는 인터페이스
아니.
Access-Control-Request-Headers
exposedHeaders
문자열 배열
클래스 또는 인터페이스
아니.
Access-Control-Expose-Headers
그 중에서 @ CrossOrigin 주 해 는 다음 과 같은 매개 변수 설명 을 사용 할 수 있 습 니 다.
  • value, origins 속성: 접근 할 수 있 는 원본 을 설정 합 니 다. 예 를 들 어:http://anxminise.cc, * 모든 도 메 인 이름 허용
  • methods 속성: GET, POST 등 전역 에서 지원 을 요청 하 는 방식 을 설정 하고 모든 지원 방식 을 한꺼번에 되 돌려 줍 니 다
  • maxAge 속성: 예비 검사 요청 의 유효 시간 을 설정 합 니 다. 단 위 는 초 입 니 다. 얼마 동안 두 번 째 예비 검사 요청 을 할 필요 가 없습니다
  • allowCredentials 속성: 쿠키 를 보 낼 수 있 는 지 설정 합 니 다. 증빙 요청 에 사용 되 며 기본적으로 쿠키 를 보 내지 않 습 니 다
  • allowedHeaders 속성: 사용자 정의 요청 헤 더 를 설정 하여 사전 검사 요청
  • 에 사용 합 니 다.
  • exposed Headers 속성: 응답 하 는 헤더 정 보 를 설정 합 니 다. 그 중에서 다른 헤더 정 보 를 설정 할 수 있 습 니 다. 설정 하지 않 을 때 기본적으로 Cache - Control, Content - Language, Content - Type, Expires, Last - Modified, Pragma 필드
  • 를 얻 을 수 있 습 니 다.
    WebMvcConfigure 대상 사용 하기
    코드 인 스 턴 스
    @Configuration
    public class MyConfiguration {
    	
        @Bean
        public WebMvcConfigurer corsConfigurer() {
            return new WebMvcConfigurer() {
                @Override
                public void addCorsMappings(CorsRegistry registry) {
                    registry.addMapping("/    (server:
      servlet:
        context-path:)/**")
                              .allowedOrigins("*")  
                              .allowCredentials(true)
                              .allowedMethods("GET", "POST", "DELETE", "PUT","PATCH")
                              .maxAge(3600);  
                }
            };
        }
    }
    

    그 중에서 해당 하 는 방법 을 통 해 크로스 도 메 인 요청 설정 을 실현 합 니 다.
    방법 류
    방법 이름
    필수
    요청 헤더 필드
    설명 하 다.
    CorsRegistry
    addMapping
    예.
    무, 비 Cors 속성,
    SpringBoot 설정 에 속 합 니 다.
    크로스 도 메 인 지원 경로 설정
    CorsRegistration
    allowedOrigins
    예.
    Access-Control-Allow-Origin
    허용 되 는 원본 설정
    CorsRegistration
    allowedMethods
    예.
    Access-Control-Allow-Methods
    GET, POST 등 도 메 인 간 요청 을 지원 하 는 방법 을 설정 합 니 다.
    CorsRegistration
    maxAge
    아니.
    Access-Control-Max-Age
    사전 검사 요청 의 유효 시간 설정
    CorsRegistration
    allowCredentials
    아니.
    Access-Control-Allow-Credentials
    증빙 요청 에 사용 할 쿠키 발송 허용 여부 설정
    CorsRegistration
    allowedHeaders
    아니.
    Access-Control-Request-Headers
    사용자 정의 요청 헤 더 를 설정 하여 미리 검사 요청 에 사용 합 니 다.
    CorsRegistration
    exposedHeaders
    아니.
    Access-Control-Expose-Headers
    응답 하 는 헤더 정 보 를 설정 합 니 다. 다른 헤더 정 보 를 설정 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기