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);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了}
}

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

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

相关文章

【k8s】pod调度——亲和,反亲和,污点,容忍

官方网址:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/ 一、亲和性 (1)节点亲和性 pod.spec.nodeAffinity ●preferredDuringSchedulingIgnoredDuringExecution:软策略 p开头 ●requiredDuri…

【ARM AMBA AXI 入门 12 -- AXI协议中的 WLAST 与 RLAST】

文章目录 AXI协议中的 WLAST 与 RLAST AXI协议中的 WLAST 与 RLAST AMBA AXI协议是由ARM公司定义的一种高性能,高频率的总线协议。总线协议中的 WLAST 信号是一个重要的信号,它在 AXI 协议中用来标识一个突发(Burst)传输的最后一…

Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测

目录 一、环境准备二、下载 ONNX 模型文件2.1 Azure 机器学习工作室2.2 Azure 机器学习 Python SDK2.3 生成模型进行批量评分多类图像分类 三、加载标签和 ONNX 模型文件四、获取 ONNX 模型的预期输入和输出详细信息ONNX 模型的预期输入和输出格式多类图像分类 多类图像分类输入…

01-基于IDEA,Spring官网,阿里云官网,手动四种方式创建SpringBoot工程

快速上手SpringBoot SpringBoot技术由Pivotal团队研发制作,功能的话简单概括就是加速Spring程序初始搭建过程和Spring程序的开发过程的开发 最基本的Spring程序至少有一个配置文件或配置类用来描述Spring的配置信息现在企业级开发使用Spring大部分情况下是做web开…

Mac下使用nvm,执行微信小程序自定义处理命令失败

环境 系统:Mac OS 终端:zsh CPU:M1/ARM架构 node环境:nvm,node20 node目录:/Users/laoxu/.nvm/versions/node/v20.1.0/bin/ 问题 在使用微信小程序的自定义处理命令时,启动失败 提示找不…

集群外访问计算节点gpu上的web链接

情况描述 现在有一个程序,通过提交作业的方式在集群的计算节点C上运行,运行后给了一个web的地址,如下图所示 然而,在自己电脑A上只能访问集群的管理节点B,无法直接访问计算节点。管理节点可以访问计算节点,计算节点无…

【数据结构】树与二叉树(二):树的表示C语言:树形表示法、嵌套集合表示法、嵌套括号表示法 、凹入表示法

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语5.1.4 树的表示1.树形表示法2.嵌套集合表示法结构体创建树主函数 3.嵌套括号表示法结构体创建树嵌套括号表示法主函数 4.凹入表示法结构体创建树凹入表示法…

LabelImg使用笔记

LabelImg使用笔记 文章目录 LabelImg使用笔记一、LabelImg简介1.1、特性1.2、LabelImg的热键 二、LabelImg安装三、3种格式的使用3.1、VOC格式标注3.2、yolo格式标注3.3、json格式 四、LabelMe 和 LabelImg适用场景 一、LabelImg简介 LabelImg 是一个用于图像标注的开源工具&a…

【iOS】——知乎日报第三周总结

文章目录 一、获取新闻额外信息二、工具栏按钮的布局三、评论区文字高度四、评论区长评论和短评论的数目显示五、评论区的cell布局问题和评论消息的判断 一、获取新闻额外信息 新闻额外信息的URL需要通过当前新闻的id来获取,所以我将所有的新闻放到一个数组中&…

密码套件:密码,算法和协商安全设置

本文深入地研究TLS 1.2密码套件的四个不同组件。首先看看我们在SSL / TLS中看到的两种不同类型的加密。 两种加密 SSL/TLS的最大困惑之一就是所使用的加密类型,与SSL证书关联的2048位密钥用于帮助协商HTTPS连接,但是它的作用实际上比大多数人认为的要小…

达梦8docker安装

达梦数据库安装 Docker安装 安装前准备 软硬件版本终端X86-64 架构Docker2023 年 6 月版 下载 Docker 安装包 请在达梦数据库官网下载 Docker 安装包。 导入安装包 拷贝安装包到 /opt 目录下,执行以下命令导入安装包: docker load -i dm8_202308…

错误:ERROR Cannot read properties of null (reading ‘type‘)

ERROR Cannot read properties of null (reading ‘type’) TypeError: Cannot read properties of null (reading ‘type’) <template><el-card><el-row :gutter"20" class"header"><el-col :span"7"><el-input pl…

不同VLAN间的通信原理

不同VLAN间的通信原理 VLANaccess口trunk口 不同VLAN间通信原理 首先我们来看看什么是VLAN VLAN VLAN&#xff08;Virtual Local Area Network&#xff09;虚拟局域网&#xff0c;是将一个物理的局域网在逻辑上划分成多个广播域的技术。VLAN技术部署在数据链路层。 VLAN能够隔…

PS Raw中文增效工具Camera Raw 16

Camera Raw 16 for mac&#xff08;PS Raw增效工具&#xff09;的功能特色包括强大的图像调整工具。例如&#xff0c;它提供白平衡、曝光、对比度、饱和度等调整选项&#xff0c;帮助用户优化图像的色彩和细节。此外&#xff0c;Camera Raw 16的界面简洁易用&#xff0c;用户可…

技术分享 | web自动化测试-文件上传与弹框处理

实战演示 文件上传 input 标签使用自动化上传&#xff0c;先定位到上传按钮&#xff0c;然后 send_keys 把路径作为值给传进去. 如图所示&#xff0c;是企业微信文件上传的页面 定位到标签为 input&#xff0c;type 为 file 的元素信息&#xff0c;然后使用 send_keys 把文件…

Cubase 13 官宣升级,用户界面重新设计,音乐创作“更自然、更直观、更方便”,全面支持 MIDI 2.0

Cubase 13简介 Steinberg发布Cubase 13升级&#xff0c;带有显著的重新设计了用户界面&#xff0c;还有众多新功能和提升作曲、制作、混音和给你创意的工作流。 获取地址 Steinberg Cubase Pro 13 功能新特性 随时随地的混音&#xff1a; MixConsole重新设计了更简洁的界面…

IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】

Docker官网 Docker官网&#xff1a;https://www.docker.com/ Docker Hub官网&#xff1a;http://hub.docker.com/ 什么是Docker Docker 是一个开源的容器引擎&#xff0c;可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者和系统管理员在笔记本上编…

前端 | (十四)canvas基本用法 | 尚硅谷前端HTML5教程(html5入门经典)

文章目录 &#x1f4da;canvas基本用法&#x1f407;什么是canvas(画布)&#x1f407;替换内容&#x1f407;canvas标签的两个属性&#x1f407;渲染上下文 &#x1f4da;绘制矩形&#x1f407;绘制矩形&#x1f407;strokeRect时&#xff0c;边框像素渲染问题&#x1f407;添加…

【原创】java+swing+mysql宠物领养管理系统设计与实现

摘要&#xff1a; 生活中&#xff0c;有很多被人遗弃的宠物&#xff0c;这些宠物的处理成为了一个新的难题。生活中也有许多人喜欢养宠物&#xff0c;为了方便大家进行宠物领养&#xff0c;提高宠物领养管理的效率和便利性。本文针对这一问题&#xff0c;提出设计和实现一个基…

什么是NPM(Node Package Manager)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…