SpringBoot 크로스 필드 문제 해결 방법 인 스 턴 스

크로스 필드 문제 에 대해 서 는 우선 브 라 우 저의 동원 정책 을 알 아야 합 니 다.
바 이 두 백과 의 동원 전략 에 대한 해석
브 라 우 저의 두 tab 페이지 에서 각각 바 이 두 와 구 글 의 페이지 를 엽 니 다.
브 라 우 저의 바 이 두 tab 페이지 에서 스 크 립 트 를 실행 할 때 이 스 크 립 트 가 어느 페이지 에 속 하 는 지 확인 합 니 다.
같은 소스 인지 확인 하 는 것 입 니 다.바 이 두 와 같은 소스 의 스 크 립 트 만 실 행 됩 니 다.[1]
원본 이 아니라면 데 이 터 를 요청 할 때 브 라 우 저 는 콘 솔 에 이상 을 보고 하고 접근 거 부 를 알려 줍 니 다.
같은 소스 정책 은 브 라 우 저의 행위 입 니 다.로 컬 데이터 가 자바 스 크 립 트 코드 에 의 해 가 져 온 데이터 에 오염 되 지 않도록 보호 하기 위해 서 입 니 다.따라서 클 라 이언 트 가 보 낸 요청 이 돌아 온 데이터 수신 을 차단 합 니 다.즉,요청 이 보 내 졌 습 니 다.서버 가 응답 하 였 으 나 브 라 우 저 에 의 해 받 아들 일 수 없습니다.
사실은 클 라 이언 트 브 라 우 저 는 url 에 자원 을 가 져 오 라 고 요청 합 니 다.즉,서버 의 ip 주소 에 엔 드 구호(http:/호스트 이름:포트 번호)를 추가 하 라 고 요청 합 니 다.만약 에 서버 가 있 는 Ip 주소(http://호스트 이름:포트 번호)가 일치 하지 않 으 면 서로 다른 소스 에 속 합 니 다.도 메 인 을 뛰 어 넘 는 문제 가 발생 합 니 다.브 라 우 저 는 서버 가 데 이 터 를 되 돌려 주 는 것 을 금지 합 니 다.
해결 방법 은 두 가지 가 있 습 니 다.
4.567917.전단 제조 규칙 에 부합 되 지 않 는 요청 규칙4.567917.백 엔 드 에서 크로스 도 메 인 지원 을 합 니 다.
크로스 필드 문제
크로스 필드 문 제 는 아래 의 일부 지역 이 다르다 는 것 을 말한다(적어도 한 곳).
요청 프로 토 콜 이 다 릅 니 다ip 주소 가 다 릅 니 다.
포트 번호 가 다르다.
요청 방식 이 다르다.
SpringBoot 크로스 도 메 인 문제 해결

/**
 * @Author: Ember
 * @Date: 2021/4/26 22:16
 * @Description:
 */
@Configuration
public class CorsConfig implements WebMvcConfigurer {
     @Override
    public void addCorsMappings (CorsRegistry registry) {
        String[] allowOrigins ={"http://localhost:8080/","https://www.quyo.fun/"};
        //           
        registry.addMapping ("/**")
                .allowedOriginPatterns ("*")
                .allowCredentials (true)
                .allowedMethods ("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*")
                .maxAge (3600);
    }


    private CorsConfiguration buildConfig () {
        CorsConfiguration corsConfiguration = new CorsConfiguration ();
        List<String> list = new ArrayList<>();
        list.add ("*");
        corsConfiguration.setAllowedOrigins (list);
        corsConfiguration.addAllowedOrigin ("*");
        corsConfiguration.addAllowedHeader ("*");
        corsConfiguration.addAllowedMethod ("*");
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter () {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource ();
        source.registerCorsConfiguration ("/**", buildConfig ());
        return new CorsFilter (source);
    }

    @Bean
    public HttpMessageConverter<String> responseBodyConverter() {
        StringHttpMessageConverter converter = new StringHttpMessageConverter(
                Charset.forName("UTF-8"));
        return converter;
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(responseBodyConverter());
    }
}

테스트
다음은 전단 AJAX 테스트 입 니 다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<link type="test/css" href="css/style.css" rel="external nofollow"  rel="stylesheet"> 
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
	$(function(){
	$("#cors").click(
		function(){
			$.ajax({
				headers:{"token":"","Content-Type":"application/json;charset=UTF-8","Access-Control-Allow-Origin":"*"},
				url:"http://47.119.112.252/book/index/show/allBlogs",
				success:function(data){
					console.log("start")
					console.log(data)
					alert(data);
				}
			})
		});
	});
</script>
<body>
	<input type="button" id="cors" value="core    "
</body>
</html>

크로스 오 버 문제 해결.
총결산
여기 서 SpringBoot 크로스 도 메 인 문제 해결 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 크로스 도 메 인 문제 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 사랑 해 주세요!

좋은 웹페이지 즐겨찾기