当前位置: 首页 > java >正文

spring cloud gateway配置

当有多个微服务项目时,就需要在前端配置多个http链接,这是件很麻烦的事情。此时,可以使用spring cloud gateway进行路由转发。spring cloud gateway是一个建立在Spring生态系统之上的API网关,在eureka注册微服务后,前端只需要把http请求发送到gateway微服务即可,gateway会自动进行请求转发和修改。

一、添加依赖和配置

要想使用该网关,需要在pom.xml里添加依赖文件:

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

添加后,要在application.yaml里进行相关配置,eureka client配置如下:

eureka:client:serviceUrl:defaultZone: http://localhost:8761/eurekainstance:instance-id: my-servicepefer-ip-address: true

gateway路由配置如下:

spring:cloud:gateway:routes:- id: after_routeuri: lb://my-service	#eureka注册时使用的服务名(即spring.application.name)predicates:Path=/api/order/**
  • id:id是每个路由的唯一标识符,用于唯一标识一个路由规则,确保在多个路由配置中每个路由都是独立的。
  • uri:指定了这个路由的目标URI,即所有匹配这个路由的请求都会被转发到lb://my-service。
  • predicates:定义判断条件,决定哪些请求会匹配当前路由。

二、CORS配置

跨域资源共享(Cross-Origin Resource Sharing,CORS)是浏览器实现的一种安全机制,用于控制不同源(域名、协议、端口)之间的资源访问权限。其核心目的是在保护用户数据安全的前提下,允许合法的跨域请求。

  1. 为什么要配置CORS
    默认情况下,浏览器会阻止网页向不同源的服务器发起跨域请求(如 Ajax、Fetch 请求),以防止恶意网站窃取用户数据。所以需要配置后才可以正常访问其他微服务。
  2. 工作原理
    当有跨域请求时,http会自动添加http头,服务器会返回对应的响应头,检查响应头是否允许该请求。
  3. 请求头类型
    • 简单请求:
      浏览器会自动添加Origin头,直接向服务器发起请求,服务器返回Access-Control-Allow-Origin响应头。浏览器会检查 Access-Control-Allow-Origin 是否包含当前源。若允许,则返回数据;否则拦截响应。
      简单请求定义如下:
      请求方法为 GET、POST 或 HEAD。
      请求头仅包含安全字段(如 Accept、Content-Type 等)。
      Content-Type 为 text/plain、multipart/form-data 或 application/x-www-form-urlencoded。
    • 预检请求:
      如使用的不是简单请求,而是使用 PUT、DELETE 方法,或自定义请求头,浏览器会先发送一个OPTIONS请求,询问服务器是否允许跨域,允许跨域才会向服务器发送请求。OPTIONS请求包含以下信息:
Origin: http://请求链接
Access-Control-Request-Method: 请求方法
Access-Control-Request-Headers: X-Custom-Header
  1. 微服务CORS配置
    spring cloud gateway需要单独配置为微服务,CORS就是在该微服务进行设置:
springcloudgatewayglobalcors:	#表示这些CORS规则将应用于所有路由。cors-configurations:'[/**]':		#哪些路径适用此CORS配置。/**表示所有路径allowed-origins: - "http://localhost:8120"	#http://localhost:8120发起的http请求allowed-methods:	#允许该请求使用哪些请求方法- GET- POST- PUT- OPTIONS		#必须包含,因为 OPTIONS 请求通常用于预检请求(preflight request),用于检查服务器是否允许跨域请求。allowed-headers: "*"	#允许的请求头,*表示所有请求头allow-credentials: true	#允许发送凭证(如 cookies 和 HTTP 认证信息)。

配置完成后,向链接http://gateway ip:端口号/api/order/发起请求即可

http://www.xdnf.cn/news/7702.html

相关文章:

  • 探索自定义地图样式,打造应用专属个性化地图
  • 《探索具身智能机器人视觉-运动映射模型的创新训练路径》
  • 中级网络工程师知识点8
  • Rocketmq Broker与队列关系,怎么存储的
  • AI语音合成平台:AnKo开启免费创作新时代!
  • 基于Telink 8258配合Wireshark抓包测试SIG Mesh的IV Index Update过程
  • Java基础 Day16
  • leetcode hot100:四、解题思路大全:滑动窗口(无重复字符的最长子串、找到字符串中所有字母异位词)、子串(和为k的子数组、)
  • Mysql刷题 day07
  • 苍穹外卖系统结构与功能报告
  • 飞致云旗下开源项目GitHub Star总数突破150,000个
  • 集成运算放大器知识汇总
  • js如何复制图片
  • 嘉立创EDA成图:原理图绘制以及PCB封装导出为.efoo文件
  • 用于管理共享内存的 C# 类 ShareMemory
  • Python 训练营打卡 Day 30
  • SpringBoot实现本地对象存储【minio、阿里云、七牛云】
  • Python-多进程编程 (multiprocessing 模块)
  • 101个α因子#6
  • P2670 [NOIP 2015 普及组] 扫雷游戏
  • 使用VGG-16模型来对海贼王中的角色进行图像分类
  • 【CodeBuddy 】从0到1,打造一个“牛马打鸡血仪”
  • C++ 初阶 | 类和对象易错知识点(上)
  • leetcode2310. 个位数字为 K 的整数之和-medium
  • Python字符串切片详解
  • Oracle中如何解决FREE BUFFER WAITS
  • Modbus通信协议详解
  • 字典和哈希表(javascript版)
  • 水利数据采集MCU水资源的智能守护者
  • 使用VMWare安装的ubuntu虚拟机,突然无法上网.