上一文中提到的解决跨域问题,依然是不完美,比较需要继承spring提供的解决跨域的类WebMvcConfigerAdapter这个类重写 addCrosMappings(CrosRegistry registry)这个方法,或者简单的使用@CrosOrignal注解来实现解决跨域通过HTTP请求之间的资源跨域访问问题,看了网上提供的一个基于zuul的网关层面解决的跨域问题解决方法在gateway层面进行处理
如果是单个接口进行跨域的访问的方法(@CrosOrignal)这里的allowCredentials是指允许cookie跨域访问
CROS是指 跨域资源共享的缩写意思。下面简答手写这个基于zuulFilter的跨域解决方案
@Configeration
public class CorsConfig{
@Bean
public CorsFilter corsFilter(){
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource ();
final CorsConfiguration config = new CorsConfiguration ();
config.setAllowCredentials(true);
config.setAllowedOrigins(Arrays.asList("*"));
config.setAllowedHeaders(Arrays.asList("*"));
config.setAllowedMethods(Arrays.asList("*"));
config.setMaxAge(3600);
source.registerCorsConfiguration("/**",config);
return new CorsFilter(source);
}
}
这个就是基于zuulFilter的解决的代码,当然网上也有其他的解决方案,比如基于Nginx的解决跨域问题
还有其他补充跨域问题解决方法的同学可以留言。