两个方法
1.如下添加配置类代码然后运行就行
```java
package com.limu.app.gateway.config;
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;
/**
* @Author FireFlyMallCorsConfiguration
* @Date: 2022/1/5 20:23
* @Description:
*/
@Configuration
public class FireFlyMallCorsConfiguration {
@Bean // 添加过滤器
public CorsWebFilter corsWebFilter(){
// 基于url跨域,选择reactive包下的
UrlBasedCorsConfigurationSource source=new UrlBasedCorsConfigurationSource();
// 跨域配置信息
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 允许跨域的头
corsConfiguration.addAllowedHeader("*");
// 允许跨域的请求方式
corsConfiguration.addAllowedMethod("*");
// 允许跨域的请求来源
corsConfiguration.addAllowedOrigin("http://localhost:8088");
// 是否允许携带cookie跨域
corsConfiguration.setAllowCredentials(true);
// 任意url都要进行跨域配置
source.registerCorsConfiguration("/**",corsConfiguration);
return new CorsWebFilter(source);
}
}
```
2.在配置文件(bootstrap.yml)里面或者配置中心写(nacos)
spring:
cloud:
gateway:
globalcors:
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
corsConfigurations:
'[/**]':
allowedHeaders: "*" #允许跨域的头
allowedOrigins: "http://localhost:8088" #跨域处理 允许所有的域
allowedMethods: #支持的方法
- GET
- POST
- DELETE
- PUT
- OPTION
allowCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这次跨域检测的有效期