저는 Spring Security로 Spring Boot 애플리케이션을 구축하고 있습니다. JavaScript의 Fetch API를 사용하여 AJAX 요청을 통해 수행되는 삭제 기능이 있습니다. 이 기능은 Chrome 및 Firefox에서 올바르게 작동하지만 Opera에서는 문제가 발생합니다. 앞서 언급했듯이 '요청 된 리소스에'Access-Control-Allow-Origin '헤더가 없습니다'오류가 콘솔에 표시됩니다.
검색했는데 CORS로 인해 브라우저는 일반적으로 다른 출처에 대한 AJAX 요청을 허용하지 않지만 삭제 요청은 동일한 도메인에 있으며 Chrome / Firefox에서 작동하는 경우 Opera에없는 이유가 궁금합니다. .
이제는 응용 프로그램과 관련된 코드를 공유하지 않습니다. 코어에 문제가 있으면 다른 브라우저에서는 작동하지 않을 것이기 때문입니다. 하지만 코드를 공유해야하는 경우 말씀해 주시면 공유하겠습니다. 하지만 지금은 무엇이 잘못되었는지조차 모릅니다. 미리 감사드립니다.
필터를 구현하여 모든 헤더를 허용 할 수 있습니다.
이것을 시도하십시오 :
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CORSFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "*");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "*");
//response.setHeader("Access-Control-Expose-Headers","yourCustomHeaderIfExist");
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(req, res);
}
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}
그리고 @CrossOrigin
컨트롤러 앞에 주석을 추가 하십시오.
이 빈을 추가하여 시도 할 수도 있습니다.
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST","PUT", "DELETE");
}
};
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다