Spring cloud gateway解决网关跨域问题

一、Spring cloud gateway介绍

Spring Cloud Gateway是一个基于Spring Framework 5,Spring Boot 2和Project Reactor等技术构建的API网关服务。它旨在为微服务架构中的应用程序提供统一的路由服务,同时还具有过滤、流量控制、安全性、监控等功能。

主要功能和特性:

  1. 动态路由:Spring Cloud Gateway可以根据特定的路由规则将请求动态路由到不同的目标服务,使得网关可以灵活适应不同的后端服务。

  2. 过滤器:可以通过预定义的过滤器或自定义过滤器来对请求进行修改、验证、日志记录等处理,以确保请求的安全性和可靠性。

  3. 负载均衡:支持基于负载均衡的路由策略,可以将请求平衡地分发到多个实例中,提高系统的性能和可用性。

  4. 限流:可以配置限流策略,对请求进行限制,防止突发流量对系统造成影响,保护后端服务的稳定性。

  5. 熔断:通过集成Hystrix等熔断器,可以实现对后端服务的熔断和降级,防止由于后端服务不可用而导致的系统崩溃。

  6. 重试:支持在请求失败时进行重试,提高系统的健壮性和可靠性。

  7. 安全性:可以集成Spring Security等安全框架,对请求进行认证和授权,保护系统的安全性。

  8. 监控:提供了丰富的监控和统计功能,可以实时查看网关的运行状态、请求流量等信息,帮助进行系统调优和故障排查。

二、跨域概念说明

       跨域(Cross-Origin)指的是在 Web 应用程序中,当一个资源(如脚本、样式表、图像等)来自于不同的域、协议或端口时,发生了跨域访问。例如,如果一个网页的源代码来自 http://domain1.com,而它加载的一个 JavaScript 文件来源于 http://domain2.com,那么这就属于跨域访问。

三、Gateway解决跨域问题的方法

1、创建全局过滤器解决

import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;@Configuration
public class CorsFilter {@Bean@Order(Ordered.HIGHEST_PRECEDENCE)public GlobalFilter corsFilter() {return (exchange, chain) -> {ServerWebExchange.Builder webExchangeBuilder = exchange.mutate();webExchangeBuilder.request(exchange.getRequest()).response(exchange.getResponse());webExchangeBuilder.response(exchange.getResponse().mutate().header("Access-Control-Allow-Origin", "*").header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS").header("Access-Control-Allow-Headers", "Content-Type").build());return chain.filter(webExchangeBuilder.build());};}
}

2、通过配置解决Gateway跨域问题

spring:cloud:gateway:globalcors: # 全局跨域配置cors-configurations: # 跨域配置列表'[/**]': # 匹配所有路径allowed-headers: "*" # 允许的请求头,*表示允许所有allowed-methods: # 允许的请求方法列表- GET- POST- PUT- DELETE- OPTIONSallowed-origins: "*" # 允许的请求来源,*表示允许所有exposed-headers: # 暴露的响应头列表- Authorization- Content-Typeallow-credentials: true # 是否允许凭证传递,true表示允许

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759675.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知乎x-zse-96逆向

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872 本文章…

JAVA每日面经——JVM篇(包含JVM优化)

👩🏽‍💻个人主页:阿木木AEcru 🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》 💹每一次技术突破,都是对自我能力的挑战和超越。 目录 一、什么是JVM?二、JVM由…

酷开系统用电视为居家生活打开精彩窗口|酷开科技|酷开会员|

随着互联网的发展,电视也承载了更多的功能。相比于传统的电视,如今的智能电视屏幕更大、分辨率更高、色彩更加鲜艳,能够呈现出更加逼真的画面效果。当观众观看大屏电视时,仿佛置身于电影大幕的场景之中,感受到更为震撼…

NodeJs接入腾讯云存储COS

什么是腾讯云COS 腾讯云的 COS(Cloud Object Storage)是一种对象存储服务,类似于亚马逊的 S3(Simple Storage Service)。COS 提供了存储和管理大规模数据的能力,用户可以通过 COS 存储和检索各种类型的数据…

html常见标签

width宽度 height高度 border边框 1px(边框线条宽度) solid(实线) red(红色) border-radius: 100px 边框圆角 background-color:red(背景颜色为红色) margin&#xf…

面试常问问题

1.数据库的优化 选取最适用的字段属性,可以将表中字段的宽度设得尽可能小 使用连接(JOIN)来代替子查询 使用联合(UNION)来代替手动创建的临时表 防止数据的完整性,使用事务 如果用户访问数据库较大时可以通过锁定表的方式来获…

获取比特币和莱特币的实时价格

数据来源: https://datacenter.jin10.com/reportType/dc_bitcoin_current 代码: import akshare as ak import pandas as pd pd.set_option(display.max_columns, None) pd.set_option(display.max_rows, None) pd.set_option(display.width, 1000)cr…

「Linux系列」Shell 变量定义及运用

文章目录 一、Shell 变量的定义规则二、Shell变量的定义方法三、Shell变量的运用问题1. 变量未定义或为空2. 变量名拼写错误3. 变量作用域问题4. 变量值被意外修改5. 变量扩展问题6. 环境变量与局部变量冲突 四、相关链接 一、Shell 变量的定义规则 在Shell中,变量…

2024年最新Anaconda3 2024版中Jupyter Notebook安装

一、 Anaconda3 2024版下载 1.下载:Free Download | Anaconda 2.等待 解释:默认选择等等下载 ,时间可能数分钟 3.安装 解释:打开刚刚下载的Anaconda Navigator,并如图安装低版本,高版本会直接报错 4. …

CSS学习笔记:transform属性实现元素的位移、旋转、缩放

位移 实现居中的两种方法 绝对定位的盒子在父盒子中实现居中效果有两种方法 法一:margin 其中,left和top的值分别为子盒子自身宽高的一半 法二:translate 实现过渡效果 translate常常配合hover和transition使用,以实现鼠标悬停…

微博修改密码后无法通过微博开放接口发送微博

生产环境,因密码修改导致授权失效致接口发送微博失效!内部网站编辑完博文后无法发送微博。在修改密码时,有提示授权应用失效,操作人员不清晰情况,直接忽视。 微博应用开放接口----》微博转发博文接口文档 无示例 遗憾…

突破边界:Web3开启数字化社会的新纪元

引言 随着科技的不断进步和数字化社会的发展,Web3正逐渐成为了人们关注的焦点。作为新一代互联网的演进形态,Web3具有突破传统边界、实现去中心化的特点,被认为将开启数字化社会的新纪元。本文将深入探讨Web3的概念、特点、应用场景&#xf…

【LeetCode: 224. 基本计算器 + 模拟 + 栈】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Java的集合体系及相关数据结构---Collection系列

​​​​​​​ 其中,有序和无序是指存取时候的顺序一致或者不一致; Collection是单列集合的顶层接口,它的方法全部单列集合可用。 Collection方法 方法名说明boolean add(E e)添加元素boolean remove(Object o)从集合中移除指定的元素…

微信小程序事件处理

微信小程序中的事件处理是指在微信小程序中处理用户的交互操作,例如点击按钮、选择器改变等。微信小程序中的事件处理分为以下几种: bindtap:点击事件。bindchange:选择器改变事件。bounddata:数据改变事件。 以下是…

SQL Server 的日志文件占满硬盘时处理方法

当 SQL Server 的日志文件占满硬盘时,可以采取以下几个步骤来解决问题: 1. 备份和压缩日志文件:首先,你可以通过备份数据库日志文件并压缩它们来释放磁盘空间。可以使用 SQL Server Management Studio (SSMS) 或 Transact-SQL (T…

语音转文字——sherpa ncnn语音识别离线部署C++实现

简介 Sherpa是一个中文语音识别的项目,使用了PyTorch 进行语音识别模型的训练,然后训练好的模型导出成 torchscript 格式,以便在 C 环境中进行推理。尽管 PyTorch 在 CPU 和 GPU 上有良好的支持,但它可能对资源的要求较高&#x…

HarmonyOS 应用开发案例

本帖下方集中了HarmonyOS Next应用开发时,会遇到的常见应用案例。后续会持续更新大量案例,帮助开发者快速学习。欢迎感兴趣的同学加入Q:454901491 72.手写绘制及保存图片案例(0319更新)(点此查看源码实现&…

Windows10无盘母盘制作-以云更新为例

Windows10无盘母盘制作-以云更新为例 缘起环境准备创建虚拟机安装系统导出系统 缘起 网吧客户端在实际环境中,经常要面对形形色色对无盘系统,五花八门对无盘镜像, 为了方便确认不同无盘环境对客户的对影响,决定自己制作一个无盘母…

项目管理平台-01-BugClose 入门介绍

拓展阅读 Devops-01-devops 是什么? Devops-02-Jpom 简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件 代码质量管理 SonarQube-01-入门介绍 项目管理平台-01-jira 入门介绍 缺陷跟踪管理系统,为针对缺陷管理、任务追踪和项目管理的商业…