跨域问题的三种解决方式总结
1.在controller层加上@CrossOrigin注解
这种方式需要在每个controller层都加注解不方便
2.方案二:添加一个配置类配置跨域请求 通过@component注解注册到spring容器中
@Component
public class WebMvcConfiguration implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/**") //添加路径规则
.allowCredentials(true) //是否允许在跨域的情况下传递cookie
.allowedOriginPatterns("*") //允许请求来源的域规则
.allowedMethods("*")
.allowedHeaders("*"); //允许所有请求头
}
}
3.方案三:在网关中进行相应的跨域配置
server:
port: 8500
spring:
application:
name: spzx-server-gateway
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
globalcors:
cors-configurations:
'[/**]':
allowedOriginPatterns: "*"
# 允许请求中携带的头信息
allowedHeaders: "*"
# 运行跨域的请求方式
allowedMethods: "*"
# 跨域检测的有效期,单位s
maxAge: 36000
routes:
- id: service-product
uri: lb://service-product
predicates:
- Path=/*/product/**