解决使用zuul的时候出现的跨域response多allow-origin值的问题
解决使用zuul的时候出现的跨域response多allow-origin值的问题
解决跨域问题:
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter(){
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowCredentials(true);
configuration.setAllowedOrigins(Arrays.asList("*"));
configuration.setAllowedHeaders(Arrays.asList("*"));
configuration.setAllowedMethods(Arrays.asList("*"));
configuration.setMaxAge(300l);
source.registerCorsConfiguration("/**",configuration);
return new CorsFilter(source);
}
}
请求头不带cookie的问题解决方案:
在配置文件中增加
sensitive-headers:
customSensitiveHeaders: true
然后会出现以下问题:
The ‘Access-Control-Allow-Origin’ header contains multiple values ‘http://192.168.1.99:8080,http://192.168.1.99:8080’, but only one is allowed.
意思是说Access-Control-Allow-Origin值只能使用一个,所以需要过滤掉其中一个,原因是zuul网关为了解决跨域问题,设置了response的Access-Control-Allow-Origin为客户端orgin,Access-Control-Allow-Origin:http://192.168.1.99:8080,然后服务网关访问微服务将response中的Access-Control-Allow-Origin:http://192.168.1.99:8080带了过去,微服务为了解决跨域,又在Access-Control-Allow-Origin中加了客户端orgin,Access-Control-Allow-Origin:http://192.168.1.99:8080,http://192.168.1.99:8080,解决方案是在sensitive-headers:下面配置一句
ignored-headers: Access-Control-Allow-Credentials, Access-Control-Allow-Origin
传递Access-Control-Allow-Credentials, Access-Control-Allow-Origin本次不过滤,但是下次传递过滤。
问题解决。
微服务改造的过程中会发现许多问题,其实只要认真思考,就一定能想明白的。
上一篇: 网络问题
下一篇: 多线程设计主要API总结