一.在网关服务中添加Filter
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
/**
* <p>
* 解决跨域问题: 配置filter,每个请求来了以后,返回给浏览器之前都添加上那些字段
* </p>
*
* @author zzl
* @since 2023/1/28 17:06
*/
@Configuration
public class GulimallCorsConfiguration {
@Bean
public CorsWebFilter corsWebFilter(){
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration= new CorsConfiguration();
//1、配置跨域
// 允许跨域的头
corsConfiguration.addAllowedHeader("*");
// 允许跨域的请求方式
corsConfiguration.addAllowedMethod("*");
// 允许跨域的请求来源
corsConfiguration.addAllowedOrigin("*");
// 是否允许携带cookie跨域
corsConfiguration.setAllowCredentials(true);
// 任意url都要进行跨域配置
source.registerCorsConfiguration("/**",corsConfiguration);
return new CorsWebFilter(source);
}
}
CorsWebFilter :是有spring提供的过滤器,会在请求到来之前和返回时经过这个过滤器,放入spring的容器中即可生效。
-
第一次options请求,此时请求到达gateway,网关在相应报文中告诉浏览器可以跨域:
在这里插入图片描述
-
浏览器发起真正的请求,则可以跨域,原理是跨域是浏览器的策略。
在这里插入图片描述
网友评论