记录一个想了一晚上没想明白的问题,就是在搭建gateway的时候,将之前写的gateway工程完全cv进来,都能正常启动注册到nacos,但是在测试请求的时候,之前的gateway服务能够正常请求转发到别的服务,新搭建的就是报错503,控制台也打印错误。一直转发不了到其他服务,
迷之操作
第一:我怀疑是我搭建的版本springboot2.6.5,cloud2021.0.1,alibaba2021.0.1.0,之前的项目使用的老版本springboot2.2.5.RELEASE,cloud H版本,alibaba2.2.1.RELEASE。
第二:我的yml没有配置正确,我百度了一下,有一个说到配置gateway的跨域配置globalcors在cloud2021版本跟之前老cloud版本写法不同。我就想不明白这跟跨域有什么关系呢,一直困扰改了了一晚上,怀疑过字符没设置utf8,怀疑多加了空格在写yml的时候,等等一系列操作。
获取解决的方案:
一:springcloud版本跟alibaba版本不一致。
版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub
二:配置路由是否正确
spring:
application:
name: service-gateway #服务名
cloud: #注册到Nacos
nacos:
discovery:
server-addr: :8848
gateway:
discovery:
locator:
enabled: false #开放服务名访问方式
lower-case-service-id: true #服务名小写
routes: #路由配置
- id : service-system #指定服务名
uri: lb://service-system #去注册中心找这个服务名
predicates: #断言,匹配访问的路径
- Path=/grc/syasstem/** #服务访问路径
filters:
- StripPrefix=2
globalcors: #跨域配置
add-to-simple-url-handler-mapping: true
cors-configurations:
'[/**]': #拦截的请求
allowedOriginPatterns: "*" #允许跨域的请求
allow-credentials: true #是否允许携带cookie
allowedHeaders: "*" #允许请求中携带的头信息
allowedMethods: #运行跨域的请求方式
- GET
- POST
- DELETE
- PUT
- PATCH
- OPTIONS
- HEAD
- CONNECT
- TRACE
# maxAge: 36000 #跨域检测的有效期,单位s
三:添加个依赖。
<--
springcloud2020弃用了Ribbon,Alibaba在2021版本nacos中删除了Ribbon的jar包,因此无法通过lb路由到指定微服务-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>