我陷入了这个问题:我在后端使用spring boot应用程序,而在前端使用angular应用程序,问题是当我在后端调用一个特定的rest url时,该URL使用我已作为maven添加到后端的jar依赖项系统范围的依赖关系,我得到一个Cors错误。所有其他后端网址都可以正常工作
这是我如何包含后端的jar依赖项:
<dependency>
<groupId>com.ex</groupId>
<artifactId>lib</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/Utils.jar</systemPath>
</dependency>
另请注意,我在前端和后端之间使用Zuul调度程序,并且我在后端进行了此配置
@Component
公共类CorsFilter扩展了OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "authorization, content-type, xsrf-token, Content-Range, Content-Disposition, Content-Description, GAuth");
response.addHeader("Access-Control-Expose-Headers", "xsrf-token");
if ("OPTIONS".equals(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
filterChain.doFilter(request, response);
}
}
}
任何帮助将不胜感激,谢谢
首先,您需要@CrossOrigin
在控制器中添加注释。比这里是文档中正确的配置:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*");
}
};
}
您可以按照自己的方式配置它。
其次,如果您正在使用,则SpringSecurity
需要添加.cors()
到您的配置中。
例:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors().and()
.csrf().disable()
.authorizeRequests()
.anyRequest().permitAll()
.and().httpBasic();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句