Gateway网关,也称为API网关或微服务网关,是一种用于构建和管理微服务架构的服务器端组件。它作为系统的入口点,接收来自客户端的请求,并将其转发到相应的微服务进行处理。
我这个项目的服务注册中心用的是Nacos
整个项目在配置跨域类的时候只需要在Gateway中配置即可,通过配置application.yml
文件实现跨域
server:
port: 10011
spring:
application:
name: gateway
cloud:
nacos:
server-addr: 127.0.0.1:8848
gateway:
routes:
- id: user-service # 路由标示,必须唯一
# uri: http://localhost:8081/
uri: lb://userservice # 路由的目标地址
predicates: # 路由断言,判断请求是否符合规则
- Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
- id: admin-service
uri: lb://adminservice
predicates:
- Path=/admin/**
globalcors:
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
# options请求 就是一种询问服务器是否浏览器可以跨域的请求
# 如果每次跨域都有询问服务器是否浏览器可以跨域对性能也是损耗
# 可以配置本次跨域检测的有效期maxAge
# 在maxAge设置的时间范围内,不去询问,统统允许跨域
cors-configurations:
'[/**]':
allowedOriginPatterns: "*"
allowedHeaders: "*"
allowedMethods: # 允许跨域的 Ajax请求
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowCredentials: true
maxAge: 3600
add-to-simple-url-handler-mapping: true
是解决options请求被拦截的问题。
options请求 就是一种询问服务器是否浏览器可以跨域的请求,如果每次跨域都有询问服务器是否浏览器可以跨域对性能也是损耗,可以配置本次跨域检测的有效期maxAge,在maxAge设置的时间范围内,不去询问,统统允许跨域
allowedOriginPatterns: "*"
表示指定允许的来源模式,可以是字符串数组或通配符模式。通过此属性,您可以更精确地定义允许的跨域请求来源
allowedMethods
指定的HTTP请求方法
allowedHeaders
任意的请求头
allowCredentials
携带凭证
maxAge
字段表示预检请求(OPTIONS)的有效期,这里设置为3600秒(1小时)。
写完这个yml文件之后就可以解决跨域问题了