RESTFul 인터페이스를 통해 외부 세계에 서비스를 제공 해야하는 경우,이 시점에서 아키텍처가 전면 및 후면 끝에서 분리되면 교차 도메인 문제가 포함됩니다. 크로스 도메인 문제를 해결하는 방법? 아래 에서이 문제에 대해 논의 해 봅시다.
해결책 1 : 컨트롤러에 @Crossorigin 주석을 추가하십시오
사용 방법은 다음과 같습니다.
@crossorigin // 주석 메소드 @RestController public class handlerscancontroller {@crossorigin (allowCredentials = "true", enlainHeaders = "*", methods = {requestMethod.get, requestMethod.post, requestMethod.delete, requestMethod.head, requestMethod.head, PET, PEP, PET, PEP, PERCED.HEAD. origins = "*") @postmapping ( "/확인") 공개 응답 처리기 (@requestbody request json) {return null; }} 해결책 2 : 글로벌 구성
코드는 다음과 같습니다.
@configuration public class myConfiguration {@bean public webmvcconfigurer corsconfigurer () {return new webmvcconfigureradapter () {@override public void addcorsmappings (corsregistry registry) {registry.addmapping ( "/**"). }}; }} 솔루션 3 : 필터와 함께 사용하십시오
스프링 부츠의 주요 클래스에서 Corsfilter 추가
/** * *주의 : 간단한 크로스 도메인이 얻을 수 있지만, 헤드 및 사후 요청이지만, 게시물 요청의 "컨텐츠 유형"은 Application/X-www-form-urlencoded, multipart/form-data 또는 text/plain * 일 수 있습니다. 그렇지 않으면 간단한 크로스 도메인이 아닙니다. 이 크로스 도메인에 대한 사전 비행 메커니즘이 있습니다. 무뚝뚝하게 말하면, 두 개의 요청, 하나의 옵션 요청 및 하나의 실제 요청*/ @bean public corsfilter corsfilter () {최종 urlbasedcorsconfigUrationSource 소스 = new UrlBasedCorsConfigUrationSource (); 최종 CorsConfiguration config = new CorsConfiguration (); config.setallowcredentials (true); // 쿠키가 Cross-domain config.addallowedorigin ( "*")에 허용합니다. //이 서버에 대한 요청의 URI를 #ALLOWED * 모든 것을 의미합니다. SpringMVC에서 *로 설정된 경우 자동으로 Origin Config.AddallowEdHeader ( " *")로 변환됩니다. // 액세스 헤더에 대한 #add, *는 모든 config.setMaxage (18000L)를 의미합니다. // 프리 플라이트 요청의 캐시 시간 (초), 즉이 기간 동안 config.addallowedMethod ( "옵션"); // 요청을 제출할 수있는 메소드는 모두 config.adlowedMethod ( "head")를 허용한다는 것을 의미합니다. config.addallowedMethod ( "get"); // get의 요청 메소드 config.addallowedMethod ( "put"); config.addallowedMethod ( "post"); config.addallowedMethod ( "delete"); config.addallowedMethod ( "Patch"); source.registercorsconfiguration ( "/**", config); 새로운 Corsfilter (소스)를 반환합니다. } 물론, 많은 마이크로 서비스가있는 경우 각 서비스의 주요 클래스에 그러한 코드를 추가해야하므로 건식 원리를 위반해야합니다. 더 나은 접근법은 Zuul의 게이트웨이 층에서 크로스 도메인 문제를 한 번에 해결하는 것입니다.
프론트 엔드 크로스 도메인에 대한 자세한 내용은 http://www.vevb.com/article/83093.htm을 참조하십시오.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.