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

Spring Boot中解决跨域问题(CORS)

1. 跨域介绍

首先解释什么是跨域,跨域就是前端和后端的端口号不同;会产生跨域问题,这里浏览器的保护机制(同源策略)。
同源策略:前端和后端的协议、域名、端口号三者都相同叫做同源。
我们看一下不同源:
VUE:http://localhost:8080
Spring: http://localhost:8081/list
当我们出现跨域问题,前端就会报一个错(篮框扩这那个):
在这里插入图片描述

2. 解决方法

上方就是不同源,两者的协议、域名相同,但是端口号不同;如何解决呢,使用Spring Boot解决,它提供三种方案:

  1. 直接在方法上方添加@CrossOrigin注解即可解决问题
	@CrossOrigin@RequestMapping("/getuserbyid")public UserInfo getUserById(Integer id) {if(id == null ) return null;return userService.getUserById(id);}
  1. 添加 CORS 过滤器
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter() {CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.setAllowCredentials(true); // 允许cookies跨域corsConfiguration.addAllowedHeader("*"); // 请求头字段corsConfiguration.addAllowedMethod("*"); // 方法corsConfiguration.addAllowedOrigin("*"); // 允许向该服务器提交请求的URI,*表示全部允许,自定义可以添加多个,在SpringMVC中,如果设成*,会自动转成当前请求头中的OriginUrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**",corsConfiguration); // 添加映射路径,以及参数return new CorsFilter(source);}
}
  1. 重写 WebMvcConfigurer 接口中的 addCorsMappings 方法
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {// 先设置映射registry.addMapping("/**").allowedOriginPatterns("*") // 允许向该服务器提交请求的URI,*表示全部允许,自定义可以添加多个,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin.allowCredentials(true) // 允许cookies跨域.allowedHeaders("*") // 请求头字段.allowedMethods("GET","POST") // 允许跨域的方法.maxAge(3600);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了}
}

相关文章:

Spring Boot中解决跨域问题(CORS)

1. 跨域介绍 首先解释什么是跨域,跨域就是前端和后端的端口号不同;会产生跨域问题,这里浏览器的保护机制(同源策略)。 同源策略:前端和后端的协议、域名、端口号三者都相同叫做同源。 我们看一下不同源&am…...

基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python 计算机竞赛

文章目录 1 前言1 课题背景2 GAN(生成对抗网络)2.1 简介2.2 基本原理 3 DeOldify 框架4 First Order Motion Model5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于生成对抗网络的照片上色动态算法设计与实现 该项目较为新颖&am…...

广州华锐互动:数字孪生可视化制作软件有哪些亮点?

由广州华锐互动开发的数字孪生可视化制作软件在当今的数字孪生领域中扮演着重要角色,它突破了许多传统数字孪生可视化制作软件的限制。以下是几个方面的突破: 无限自由度:传统的3D建模工具通常有限制编辑器的自由度,使用户难以进行…...

设计模式之工厂模式讲解与案例

工厂模式是一种创建对象的设计模式,它通过提供一个统一的接口来创建对象,隐藏了具体对象的实例化过程。Java中的工厂模式有多种实现方式,下面我将举两个常见的例子。 简单工厂模式(Simple Factory Pattern)&#xff1a…...

(免费领源码)php#MySQL软件测试文档管理系统28035-计算机毕业设计项目选题推荐

目 录 摘 要 Abstract 第1章 前 言 1.1 研究背景 1.2 开发意义 1.3 系统开发目标 第2章 系统开发环境 6 2.1 HTTP协议 6 2.2 HTML网页技术 6 2.3 B/S结构 6 2.4 PHP脚本语言 7 2.5 MySQL数据库 7 2.6 Apache简介 8 第3章 需求分析 3.1 需求分析 3.2 系统可…...

05.Oracle数据库对象

Oracle数据库对象 Oracle数据库对象是指在Oracle数据库中存储和管理数据的各种实体。以下是一些常见的Oracle数据库对象: 表(Table):用于存储数据的基本结构。表由一组列(Column)组成,每列定义了…...

某国产中间件企业:提升研发安全能力,助力数字化建设安全发展

​某国产中间件企业是我国中间件领导者,国内领先的大安全及行业信息化解决方案提供商,为各个行业领域近万家企业客户提供先进的中间件、信息安全及行业数字化产品、解决方案及服务支撑,致力于构建安全科学的数字世界,帮助客户实现…...

Servlet中主要的内置对象

Servlet中有一些内置对象,它们提供了与 Web 容器和客户端交互的功能。这些对象在开发Servlet时可以直接使用,无需显式创建。 一些主要的内置对象包括: HttpServletRequest:代表客户端的HTTP请求,提供访问请求的内容&am…...

STL-set和map

目录 一、pair和make_pair 1. pair 2. make_pair 二、set (一)set的模板参数列表 (二)set的构造 (三)set的插入 1. 测试1 2. 测试2 (四)low_bound和upper_bound&#xff…...

【WinForm详细教程四】WinForm中的ProgressBar 、ImageList和ListView控件

文章目录 1.ProgressBar2. ImageList3.ListView控件 1.ProgressBar 用于显示某个操作的进度。 属性: Value: 表示当前进度条的值,其范围由Min和Max决定。Step: 设置每次调用PerformStep()方法时增加的步长。MarqueeAnimationSpeed: 在Style设置为Marq…...

写一个简单实用的Excel工具类

我们在开发中经常要将数据导入成Excel表格供展示&#xff0c;也需要解析Excel中的数据&#xff0c;官方提供的api操作太麻烦&#xff0c;这边封装了一个Excel工具类&#xff0c;可以很轻松的实现Excel的操作 首先加入依赖 <dependencies><!-- EasyPoi 基本库依赖 --…...

C#中LINQtoObjects、LINQtoDataSet和LINQtoXML

目录 一、使用LINQ操作数组和集合 二、使用LINQ操作DataSet数据集 1.AsEnumerable()方法 2.CopyToDataTable()方法 3.AsDataView()方法 4.Take()方法 5.Sum()方法 6.示例 &#xff08;1&#xff09;源码 &#xff08;2&#xff09;生成效果 三、使用LINQ操作XML 1.…...

k8s中 RBAC中,clusterrole,serviceaccount , rolebinding 是什么关系谁先谁后

在Kubernetes的RBAC&#xff08;Role-Based Access Control&#xff09;中&#xff0c;ClusterRole、ServiceAccount和RoleBinding是三个关键的组件&#xff0c;它们之间的关系如下&#xff1a; ClusterRole&#xff1a;ClusterRole 是一种全局的权限规则&#xff0c;它定义了一…...

什么是文件安全

文件安全就是通过实施严格的访问控制措施和完美的权限卫生来保护您的业务关键信息不被窥探&#xff0c;除了启用和监控安全访问控制外&#xff0c;整理数据存储在保护文件方面也起着重要作用。通过清除旧的、过时的和其他垃圾文件来定期优化文件存储&#xff0c;以专注于关键业…...

maven的settings.xml和pom.xml配置文件详解

一、配置文件 maven的配置文件主要有 settings.xml 和pom.xml 两个文件。 其中在maven安装目录下的settings.xml&#xff0c;如&#xff1a;D:\Program Files\apache-maven-3.6.3\conf\settings.xml 是全局配置文件 用户目录的.m2子目录下的settings.xml&#xff0c;如&#…...

YB2503HV 100V 3A SOP8内置MOS 高效率降压IC(昱灿)

YB2503HV 100V 3A SOP8内置MOS 高效率降压IC 描述&#xff1a; YB2503HV是单片集成可设定输出电流的开关型降压恒压驱动器&#xff0c;可工作在宽输入电压范围具有优良的负载和线性调整度。安全保护机制包括每周期的峰值限流、软启动、过压保护和温度保护。YB2503HV需要非常少…...

Redis安装Linux

1、下载安装包 wget http://download.redis.io/releases/redis-3.0.0.tar.gz 2、安装 mkdir /usr/local/redis cp redis-3.0.0.tar.gz /usr/local/redis cd /usr/local/redis tar -zxvf redis-3.0.0.tar.gz cd /usr/local/redis/redis-3.0.0 make PREFIX/usr/local/red…...

PCL点云处理(007)-Ransac

随机抽样一致性算法RANSAC(Random sample consensus)是一种迭代的方法来从一系列包含有离异值的数据中计算数学模型参数的方法。 RANSAC算法本质上由两步组成&#xff0c;不断进行循环&#xff1a; 从输入数据中随机选出能组成数学模型的最小数目的元素&#xff0c;使用这些元素…...

有方N58 HTTP POST 请求连接 TDengine

串口调试软件&#xff1a;格西调试精灵 第一步先注册网络获取IP地址 建立PPP连接 ATXIIC1\r PPP链路建立成功&#xff0c;查询IP地址 ATXIIC?\r 设置网络APN ATCREG?\r 运行结果&#xff0c;红线处是获…...

基于Python+Pygame实现一个滑雪小游戏

目录 项目介绍Pygame介绍项目文件夹介绍演示视频代码免费领取 一、项目介绍 使用介绍&#xff1a;运行main.py文件后&#xff0c;通过左右按键可以控制小人的移动&#xff0c;如果经过旗杆那么10分&#xff0c;如果碰到树木那么减50分。 二、Pygame介绍 Pygame是一个用于游…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...