[SPRING] Spring에서 CORS 지원을 완전히 비활성화 할 수 있습니까?
SPRINGSpring에서 CORS 지원을 완전히 비활성화 할 수 있습니까?
CORS에서 설명했듯이 Origin 헤더와 Access-Control-Request-Method 헤더가 설정된 OPTIONS 엔드 포인트에 요청을 보내는 경우 표준 헤더로 인해 프리 플라이트 요청이 실패합니다. 그러면 Spring 프레임 워크에 의해 인터셉트되어 메소드가 실행되지 않습니다. 받아 들여진 해결책은 @CrossOrigin 주석을 사용하여 Spring이 403을 반환하는 것을 막는 것입니다. 그러나 Swagger Codegen으로 API 코드를 생성하므로이 기능을 비활성화하고 수동으로 OPTIONS 응답을 구현하고 싶습니다.
그렇다면 스프링에서 CORS 차단을 비활성화 할 수 있습니까?
해결법
-
==============================
1.그들의 문서에서 :
그들의 문서에서 :
스프링 웹 MVC를 사용하고 있다면
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH"); } }
스프링 부트를 사용하는 경우 :
@Configuration public class MyConfiguration { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH"); } }; } }
유리 Yunikov 대답은 정확합니다. 하지만 나는 "커스텀"필터를 좋아하지 않는다.
스프링 웹 보안이 문제가되는 경우. 이 SO 답변을 확인하십시오.
-
==============================
2.다음 필터를 추가하십시오 (자체 요구 사항 및 지원되는 방법에 맞게 사용자 정의 할 수 있음).
다음 필터를 추가하십시오 (자체 요구 사항 및 지원되는 방법에 맞게 사용자 정의 할 수 있음).
@Component public class CorsFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain filterChain) throws ServletException, IOException { response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, PATCH, HEAD"); response.addHeader("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); response.addHeader("Access-Control-Expose-Headers", "Access-Control-Allow-Origin, Access-Control-Allow-Credentials"); response.addHeader("Access-Control-Allow-Credentials", "true"); response.addIntHeader("Access-Control-Max-Age", 10); filterChain.doFilter(request, response); } }
from https://stackoverflow.com/questions/44697883/can-you-completely-disable-cors-support-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Thymeleaf 템플릿에서 세션 속성에 액세스하기 (0) | 2019.03.30 |
---|---|
[SPRING] 객체로 태그 선택 - Thymeleaf 및 Spring MVC (0) | 2019.03.30 |
[SPRING] 적합한 기본 RequestUpgradeStrategy가 없습니다. (0) | 2019.03.30 |
[SPRING] 나머지와 함께 부울 값을 반환하는 방법? (0) | 2019.03.30 |
[SPRING] @Transactional in Spring + 최대 절전 모드 (0) | 2019.03.30 |