SpringCloudAlibaba:服务网关之Gateway的cors跨域问题

news2024/11/18 17:44:44

目录

一:解决问题

二:什么是跨域

三:cors跨域是什么? 


一:解决问题

遇到错误:

        前端请求时报错

解决:

网关中添加配置文件,注意springboot版本,添加配置。

springboot升级成2.4.0以上时对AllowedOrigin设置发生了改变,不能有“ * ”,可以替换成AllowedOriginPattern
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;

@Configuration
public class CorsConfig {

    // 该配置适用于reactive响应式环境
    @Bean
    public CorsWebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true); //是否允许携带cookie
        // config.addAllowedOrigin("*"); //可接受的域,是一个具体域名或者*(代表任意域名)
        // springboot升级成2.4.0以上时对AllowedOrigin设置发生了改变,不能有”*“,可以替换成AllowedOriginPattern
        config.addAllowedOriginPattern("*");
        config.addAllowedHeader("*"); //允许携带的头
        config.addAllowedMethod("*"); //允许访问的方式
        config.setAllowCredentials(true);

        // 必须是reactive包下的UrlBasedCorsConfigurationSource
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config);

        return new CorsWebFilter(source);
    }
    
}

二:什么是跨域

跨域是指浏览器处于安全考虑,对 JavaScript 发起的不同源的请求进行限制的一种机制。

所谓同源是指协议,域名和端口完全相同,不同源间请求则被认为是跨域的。

常见的跨域场景包括:

  1. 主域名相同,子域名不同的场景,如 www.example.com 和 api.example.com
  2. 端口号不同,如 www.example.com:8080 和 www.example.com:8081
  3. 协议不同,如 http://www.example.com 和 https://www.example.com

当 JavaScript 请求不同源的资源时,会被浏览器拒绝。这种浏览器的安全限制机制,就称为同源策略。

跨域并不是请求本身的问题,而是同源策略的限制导致的。

要跨域访问资源,常用的解决方法是通过 CORS、JSONP、代理等方式进行跨域资源共享。

绕过同源策略,使得不同源间的数据交互成为可能,这就是跨域问题的根本解决之道。

三:cors跨域是什么? 

CORS(Cross-Origin Resource Sharing) 是跨域资源共享,是一种浏览器技术,它允许在一个域名的网页请求其他域名的资源,解决了AJAX请求跨域的限制。

跨域是指一个域下的网页请求另一个域名的资源,默认情况下是被浏览器禁止的。 CORS提供了一种跨域请求资源的标准方法。

CORS主要通过服务端的配置来实现跨域访问,主要有以下几点:

  1. 服务端的响应头中包含Access-Control-Allow-Origin字段,并指定允许请求资源的域名。
  2. 对预检请求进行处理,响应头中包含Access-Control-Allow-Methods等字段,表明允许的请求方法。
  3. CORS请求需要携带Origin字段,表示请求来源。
  4. 支持凭证的请求需返回Access-Control-Allow-Credentials字段。
  5. OPTIONS请求用于预检,以确定实际请求是否安全。

启用CORS后,浏览器将根据CORS的头信息判断跨域请求是否安全,来决定是否允许这次跨域请求。

总之,CORS通过服务器配置请求域的白名单,并在头信息中进行沟通,来决定跨域请求是否可以发出,从而实现跨域资源访问。这是一个广泛应用的跨域解决方案。 

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

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

相关文章

Opencv Win10+Qt+Cmake 开发环境搭建

文章目录 一.Opencv安装二.Qt搭建opencv开发环境 一.Opencv安装 官网下载Opencv安装包 双击下载的软件进行解压 3. 系统环境变量添加 二.Qt搭建opencv开发环境 创建一个新的Qt项目(Non-Qt Project) 打开创建好的项目中的CMakeLists.txt,添加如下代码 # openc…

SpringBoot IOC与AOP(一)

IOC AOP 一、 分层解耦 内聚: 软件中各个功能模块内部的功能联系 耦合: 衡量软件中各个层/模块之间的依赖、关联的程度 软件设计原则:高内聚、低耦合 ​ 控制反转:Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到…

Java 悲观锁 乐观锁

锁可以从不同的角都分类。其中乐观锁和悲观锁是一种分类方式 一、悲观锁、乐观锁定义 悲观锁就是我们常说到的锁。对于悲观锁来说,他总是认为每次访问共享资源时会发生冲突,所以必须每次数据操作加上锁,以保证临界区的程序同一时间只能有一个…

文件上传漏洞 -- uploadlabs为例

文件上传漏洞原理 一些web应用程序中允许上传图片、视频、头像和许多其他类型的文件到服务器中。 文件上传漏洞就是利用服务端代码对文件上传路径变量过滤不严格将可执行的文件上传到一个到服务器中 ,再通过URL去访问以执行恶意代码。 非法用户可以利用上传的恶意脚…

如何使用 Flatpak 在 Linux 上安装 ONLYOFFICE 桌面编辑器?

Flatpak 是一款与 Linux 发行版无关的软件实用工具,可用于在 Linux 上构建和分发桌面端应用。其可帮助您安装第三方 Linux 应用程序,无需安装库或处理依赖。 ONLYOFFICE 桌面版是什么 ONLYOFFICE 编辑器桌面版是一款全面的办公工具,提供了文…

常用抓包命令

tcpdump的命令参数介绍 tcpdump选项可划分为四大类型: 1.控制抓包行为 2.控制信息如何显示 3.控制显示什么数据 4.过滤命令 一个电脑是可以有多个网卡的! 易错:ping命令式指定网口要-I ,-i表示ping的时间间隔、tcpdump指定网口-i 。 nsloo…

优惠券秒杀(二)

库存超卖问题分析 库存超卖问题其本质就是多个线程操作共享数据产生的线程安全问题,即当一个线程在执行操作共享数据的多条代码的过程中,其他线程也参与了进来,导致了线程安全问题的产生。例如:线程1发送请求,查询库存…

openGauss学习笔记-22 openGauss 简单数据管理-HAVING子句

文章目录 openGauss学习笔记-22 openGauss 简单数据管理-HAVING子句22.1 语法格式22.2 参数说明22.3 示例 openGauss学习笔记-22 openGauss 简单数据管理-HAVING子句 HAVING子句可以让我们筛选分组后的各组数据。 WHERE子句在所选列上设置条件,而HAVING子句则在由…

Facebook Shop商店如何开通?6个步骤

Facebook作为全球领先的社交平台,一直以来是跨境玩家的必争之地。据统计,目前它活跃用户27亿人/月,访问量21亿/天。近年来社媒电商红利当头,而Meta 于2020年5月推出的Facebook Shop也一直备受关注 。这也是用户的在facebook上网购…

108、RocketMQ的底层实现原理(不需要长篇大论)

RocketMQ的底层实现原理 RocketMQ由NameServer集群、Producer集群、Consumer集群、Broker集群组成,消息生产和消费的大致原理如下: Broker在启动的时候向所有的NameServer注册,并保持长连接,每30s发送一次心跳Producer在发送消息的时候从Na…

Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目

Tomcat 一、Tomcat简介二、Tomcat基本使用三、Maven创建Web项目3.1 Web项目结构3.2开发完成部署的Web项目3.3创建Maven Web项目3.3.1方式一3.3.2方式二(个人推荐) 总结 一、Tomcat简介 Web服务器: Web服务器是一个应用程序(软件&…

RNN架构解析——GRU模型

目录 GRU模型实现优点和缺点 GRU模型 实现 优点和缺点

day46-SSM

0目录 SSM 1.SSM框架集成 1.1 创建数据库、表、工程,引入依赖 1.2 配置web.xml(前端控制器和字符过滤器) 1.3 配置applicationContext.xml 1.4 实现增删改查功能 可以用Model对象替代HttpServletRequest 详情页面:Ma…

超宽带人员定位系统源码 智慧工厂人员定位系统源码

超宽带人员定位系统源码 智慧工厂人员定位系统源码 随着工业信息化技术的发展,大型制造企业对人员、车辆、物资的管理要求越来越细致,企业希望更科学的调度每一个生产元素,从而突破管理瓶颈,进一步提高生产效率及企业安全管理和服…

[计算机入门] 操作项目

2.9 操作项目 2.9.1 新建项目 方法一: 切换到主页选项卡,点击新建项目,在弹出的项目中,点击要新建文件类型。如果是要新建文件夹,只需要点击当前选项卡新建组中的新建文件夹即可。 方法二: 在当前文件夹…

[OnWork.Tools]系列 02-安装

下载地址 百度网盘 历史版本连接各种版本都有,请下载版本号最高的版本 链接:https://pan.baidu.com/s/1aOT0oUhiRO_L8sBCGomXdQ?pwdn159提取码:n159 个人链接 http://on8.top:5000/share.cgi?ssiddb2012fa6b224cd1b7f87ff5f5214910 软件安装 双…

华为刷题:HJ3明明随机数

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);int N scan.nextInt();int[] arr new int[N];for (int i 0; i < N; i) {int n sca…

哈希表的简单模拟实现

文章目录 底层结构哈希冲突闭散列定义哈希节点定义哈希表**哈希表什么情况下进行扩容&#xff1f;如何扩容&#xff1f;**Insert()函数Find()函数二次探测HashFunc()仿函数Erase()函数全部的代码 开散列定义哈希节点定义哈希表Insert()函数Find()函数Erase()函数总代码 初识哈希…

vue基础-axios封装/同步请求

&#x1f4d6; 本章介绍 Vue 项目中如何使用 Axios 封装 http 请求&#xff0c;请求/响应拦截器部分写的比较简单&#xff0c;后续项目中可以补充。 &#x1f4a6; 1、/src/utils/目录下建立一个htttp.js 导入axios设置axios请求参数创建axios实例请求拦截器响应拦截器封装ge…

文件上传

js绕过 打开网页尝试上传一句话木马&#xff0c;发现只能上传图片文件 审计源代码&#xff0c;发现使用一个checkfile函数js对文件类型进行了屏蔽 于是我们修改网页代码&#xff0c;去除返回值的检查函数 checkFile() 上传成功&#xff0c;使用蚁剑连接 连接成功 .htaccess绕…