- 问题:
‘http://xxxxx.yyyyy.com’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on on the requested resource. - 原因:
存在跨域问题 - 解决方式:
事实上,
SpringMVC
已经帮我们写好了CORS
的跨域过滤器:CorsFilter
,内部已经实现了刚才所讲的判定逻辑,我们直接用就好了。
在excellent-gateway
中编写一个配置类,并且注册CorsFilter:
在项目的路由网关中编写CorsConfig配置文件,如下图:
@Configuration
public class ExcellentCorsConfig {
@Bean
public CorsFilter corsFilter() {
//1.添加CORS配置信息
CorsConfiguration config = new CorsConfiguration();
//1) 允许的域,不要写*,否则cookie就无法使用了
config.addAllowedOrigin("http://manage.leyou.com");
//2) 是否发送Cookie信息
config.setAllowCredentials(true);
//3) 允许的请求方式
config.addAllowedMethod("OPTIONS");
config.addAllowedMethod("HEAD");
config.addAllowedMethod("GET");
config.addAllowedMethod("PUT");
config.addAllowedMethod("POST");
config.addAllowedMethod("DELETE");
config.addAllowedMethod("PATCH");
// 4)允许的头信息
config.addAllowedHeader("*");
//2.添加映射路径,我们拦截一切请求
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
//3.返回新的CorsFilter,参数:cors的配置员对象
return new CorsFilter(configSource);
}
}