1.导入依赖
<!--网关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务发现依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.配置文件
server:
port: 10010
spring:
application:
name: gateway
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
routes:
- id: userservice #路由id,是一个唯一标识
uri: lb://userservice #lb:负载均衡 userservice是服务名
predicates: #断言工厂,下面的规则如果成立,就会进行路由
- Path=/user/** # 以/user开头的请求都路由到userservice微服务中
- id: orderservice #路由id,是一个唯一标识
uri: lb://orderservice #lb:负载均衡 userservice是服务名
predicates: #断言工厂,下面的规则如果成立,就会进行路由
- Path=/order/** # 以/user开头的请求都路由到userservice微服务中
#基于网关访问用户服务
#http://localhost:10010/user/1
3.跨域问题
spring:
cloud:
gateway:
# 。。。
globalcors: # 全局的跨域处理
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
corsConfigurations:
'[/**]':
allowedOrigins: # 允许哪些网站的跨域请求,如果是80端口,不要写端口号
- "http://localhost:8090"
- "http://127.0.0.1:8090"
- "http://localhost"
- "http://127.0.0.1"
allowedMethods: # 允许的跨域ajax的请求方式
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeaders: "*" # 允许在请求中携带的头信息
allowCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这次跨域检测的有效期