跨域
1.域名不同:www.baidu.com和www.taobao.com,www.taobao.org
2.域名相同,端口不同。localhost:8080和localhost:8081
跨域问题
浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题。
解决方案
CORS
浏览器询问服务器是否允许跨域,询问是option请求。
网关中跨域的解决方案
前端启动的端口是8090,访问后端的地址是路由地址 localhost:10010
server:
port: 10010 # 网关端口
spring:
application:
name: gateway # 服务名称
cloud:
nacos:
server-addr: localhost:8848 # nacos 地址
gateway:
globalcors: # 全局的跨域处理
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
corsConfigurations:
'[/**]': # 拦截一切请求
allowedOrigins: # 允许哪些网站的跨域请求
- "http://localhost:8090"
- "http://www.leyou.com"
allowedMethods: # 允许跨域ajax的请求方式
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeaders: "*" # 允许在请求中携带头信息
allowedCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这次跨域检测的有效期,有效期内将不再发起询问服务器是否允许跨域的请求
routes:
- id: user-service # 路由id,自定义,只要唯一即可
uri: lb://user-service # 路由的目标地址lb是负载均衡,后面跟服务名称
predicates: # 路由断言,判断请求是否符合路由的规则的条件
- Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
- id: order-service
uri: lb://order-service
predicates:
- Path=/order/**
filters: # 过滤器,只对order-service的路由请求生效
- AddRequestHeader=truth,xkj will be success. # 添加请求头 order 1
default-filters: # 默认过滤器,会对所有的路由请求都生效
- AddRequestHeader=common,everyone can be success. # order 1