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

Spring boot开启跨域配置

Spring boot开启跨域配置

背景

跨域(Cross-Origin)是指在互联网上的一个域下的文档或脚本尝试请求另一个域下的资源时,域名、协议或端口不同的这种情况。具体来说,如果一个网页试图通过脚本(如JavaScript)从不同源的服务器上请求数据,就会触发浏览器的同源策略限制,导致跨域问题。
同源策略(Same-origin policy)是Web浏览器的一个安全功能,它要求Web浏览器仅允许执行来自同一站点的脚本访问该站点的资源。这意味着,如果网页A尝试访问网页B的资源,且这两个网页的协议、域名或端口号中任何一个不相同,浏览器就会阻止这种访问,以防止恶意网站读取另一个网站的数据。

Spring boot解决跨域问题

一、controller添加注解

在controller层添加@CrossOrigin就可以解决跨域问题

@RestController
@RequestMapping("test")
@Slf4j
@CrossOrigin
public class DemoController {@RequestMapping("message")public String test(@RequestBody Message message) {log.info("{}", JSON.toJSONString(message));return "test";}
}
二,全局配置

添加如下全局配置就可以统一配置跨域支持

@Configuration
public class MvcConfig implements WebMvcConfigurer {/*** 开启全局跨域配置* @param registry*/@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOriginPatterns("*").allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE").maxAge(3600).allowCredentials(true);}}
三,通过拦截器配置

通过如下拦截器配置,也可以支持跨域

public class CorsInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//表示接受任意域名的请求,也可以指定域名response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));//该字段可选,是个布尔值,表示是否可以携带cookieresponse.setHeader("Access-Control-Allow-Credentials", "true");response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS");response.setHeader("Access-Control-Allow-Headers", "*");//这里可以不加,但是其他语言开发的话记得处理options请求/*** 非简单请求是对那种对服务器有特殊要求的请求,* 比如请求方式是PUT或者DELETE,或者Content-Type字段类型是application/json。* 都会在正式通信之前,增加一次HTTP请求,称之为预检。浏览器会先询问服务器,当前网页所在域名是否在服务器的许可名单之中,* 服务器允许之后,浏览器会发出正式的XMLHttpRequest请求*/if(HttpMethod.OPTIONS.toString().equals(request.getMethod())){return true;}return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}

总结

Spring boot解决跨域问题还是很方便的,遇到跨域问题,通过以上方式都可以实现解决

相关文章:

Spring boot开启跨域配置

Spring boot开启跨域配置 背景 跨域(Cross-Origin)是指在互联网上的一个域下的文档或脚本尝试请求另一个域下的资源时,域名、协议或端口不同的这种情况。具体来说,如果一个网页试图通过脚本(如JavaScript&#xff09…...

java面试题:hashCode的作用

在Java集合中,hashCode起着至关重要的作用,特别是在基于哈希的集合类如HashMap、HashSet和Hashtable中。以下是hashCode在集合中的主要作用: 快速查找和定位: hashCode被用作确定对象在哈希表中存储位置的索引(或称为“…...

从零开始精通Onvif之获取设备信息

💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 与设备交互的第一步 发现设备之后,与设备进行交互的第一步,是连接上设备,并获取设备的信息。连接设备&#…...

FiRa标准UWB MAC实现(三)——距离如何获得?

继续前期FiRa MAC相关介绍,将FiRa UWB MAC层相关细节进一步进行剖析,介绍了UWB技术中最重要的一个点,高精度的距离是怎么获得的,具体使用的测距方法都有哪些,原理又是什么。为后续FiRa UWB MAC的实现进行铺垫。 3、测距方法 3.1 SS-TWR SS-TWR为Single-Sided Two-Way Ra…...

基于百度翻译API的火车头PHP翻译插件,可以翻译HTML片段

关于火车头的百度翻译插件,相信大家在火车头官网或网上都能找到相关代码,百度翻译插件是PHP写的,就一个PHP文件,简单灵活,不受火车头软件版本限制,任何有PHP插件权限的火车头版本都可以使用。但是百度API翻…...

mysql高级用法常用函数

mysql高级用法 1、自定义排序 select * from movies order by field(actors, 成龙, 靳东, 刘亦菲, 范冰冰); // 字段中存在null值 select * from movies order by field (coalesce(actors,null),成龙, 靳东, 刘亦菲, 范冰冰,null)2、空值NULL排序(ORDER BY IF(ISN…...

【打印100个常用Linux命令】

#!/bin/bash 定义一个函数,用于打印100个常用Linux命令 print_commands() { echo “以下是一些常用的Linux命令:” echo “----------------------------------” echo “1. pwd - 显示当前工作目录” echo “2. ls - 列出当前目录下的文件和文件夹” …...

友情提示:lazarus的tsortgrid.autofillcolumns存在BUG

直接在tsortgrid的属性中设置autofillcolumns为true,会提示:123个错误。即使修改为false,编译运行照样会出现上述错误。唯一解决的办法就是删除sortgrid重新添加一个。 代码设置SortGrid1.AutoFillColumns : TRUE不受影响。...

github的个人readme文件

一个好的svg图: Simon-He95/profile-3d-contrib/profile-season-animate.svg at 4281d9f46e3d5416bd8f8cc5779157bfdaa8589d Simon-He95/Simon-He95 GitHub 请访问他的主页从提交记录就可以看到这个立体的登录github的图...

java面试题: HashMap、HashSet 和 HashTable 的区别

HashMap 常用方法 HashMap 是一个基于哈希表的 Map 接口的实现。它允许使用 null 值和 null 键。 java 复制 // 创建一个HashMap HashMap<KeyType, ValueType> map new HashMap<>(); // 添加元素 map.put(key, value); // 获取元素 ValueType value map.get…...

CPP初级:模板的运用!

目录 一.泛型编程 二.函数模板 1.函数模板概念 2.函数模板格式 3.函数模板的原理 三.函数模板的实例化 1.隐式实例化 2.显式实例化 3.模板参数的匹配原则 四.类模板 1.类模板的定义格式 2.类模板的实例化 一.泛型编程 泛型编程&#xff1a;编写与类型无关的通用代码…...

排序---基数排序

前言 个人小记 一、简介 基数排序是一种非比较排序&#xff0c;所以排序速度较快&#xff0c;当为32位int整数排序时&#xff0c;可以将数分为个位十位分别为2^16,使得拷贝只需要两轮&#xff0c;从而达到2*n&#xff0c;然后给一个偏移量&#xff0c;使得可以对负数排序。以…...

“新高考”下分班怎么分?

来自安徽的张女士告诉我&#xff1a;上一年孩子升入了高中&#xff0c;但没想到才高一&#xff0c;孩子就面临了一个困难的挑选&#xff1a;312”分班&#xff01; 什么是312”分班呢&#xff1f;许多人或许不明白&#xff0c;便是要求学生在高一入学时&#xff0c;针对于3门必…...

二叉树的层序遍历-力扣

本题是二叉树的层序遍历&#xff0c;通过一个队列来控制遍历的节点&#xff0c;二叉树每层的节点和上一层入队的节点个数是相同的&#xff0c;根据这一点编写循环条件。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* …...

N32G45XVL-STB之移植LVGL(lvgl-8.2.0)

目录 概述 1 软硬件介绍 1.1 软件版本信息 1.2 ST7796-LCD 1.3 MCU IO与LCD PIN对应关系 2 认识LVGL 2.1 LVGL官网 2.2 LVGL库文件下载 3 移植LVGL 3.1 准备移植文件 3.2 添加lvgl库文件到项目 3.2.1 src下的文件 3.2.2 examples下的文件 3.2.3 配置文件路径 3.2…...

【设计模式】创建型设计模式之 原型模式

介绍 原型模式是一种创建型设计模式&#xff0c;主要用于创建重复的对象&#xff0c;而无需重新初始化它们&#xff0c;从而提高效率并简化对象的创建过程。此模式的核心思想是利用已存在的对象实例&#xff0c;通过复制&#xff08;克隆&#xff09;的方式来生成新的对象&…...

【类型商店】字符字符串(下)

啊&#xff0c;哈喽&#xff0c;小伙伴们大家好。我是#Y清墨&#xff0c;今天呐&#xff0c;我要介绍的是字符与字符串。 导语 前两期&#xff0c;我们已经懂得了概念&#xff0c;今天来看些函数。 正题 一.增加或连接 &#xff08;1) 后面增加() string s1,s2; //定义 s…...

『 Linux 』内存管理与文件系统

文章目录 交换分区页与页框(页帧)交换分区与内存之间的交换操作系统如何管理内存物理地址转换页号与页内偏移量 内存管理,文件系统与文件管理之间的联系 交换分区 在Linux的安装过程中,用户将会被提示创建一个交换分区; 这是一个特殊的分区,其大小可以由用户根据系统内存需求和…...

线性代数|机器学习-P8矩阵低秩近似eckart-young

文章目录 1. SVD奇异值分解2. Eckart-Young2.1 范数 3. Q A Q U Σ V T QAQU\Sigma V^T QAQUΣVT4. 主成分分析图像表示 1. SVD奇异值分解 我们知道&#xff0c;对于任意矩阵A来说&#xff0c;我们可以将其通过SVD奇异值分解得到 A U Σ V T AU\Sigma V^T AUΣVT&#xff0…...

平面设计神器CorelDRAW2021精简版,你值得拥有!

亲爱的设计师小伙伴们&#xff0c;今天我要为大家种草一款神奇的软件——CorelDRAW平面设计软件2021精简版&#xff01;&#x1f929;✨作为一名专业的图形设计师&#xff0c;我深知一个好工具对于我们的工作有多么重要。而这款软件简直就是我们设计师的救星&#xff01;&#…...

利用OFA-Image-Caption自动生成Latex论文图表标题与描述

利用OFA-Image-Caption自动生成Latex论文图表标题与描述 写论文最烦人的步骤是什么&#xff1f;对我而言&#xff0c;除了反复修改格式&#xff0c;就是给那一大堆图表想标题和写描述了。一张图&#xff0c;你得想个既准确又简洁的标题&#xff0c;还得在正文里引用它&#xf…...

LeagueAkari终极教程:英雄联盟玩家的智能辅助工具完全指南

LeagueAkari终极教程&#xff1a;英雄联盟玩家的智能辅助工具完全指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit LeagueAkar…...

ABYSSAL VISION(Flux.1-Dev)风格化研究:模拟Typora等工具的极简文档配图

ABYSSAL VISION&#xff08;Flux.1-Dev&#xff09;风格化研究&#xff1a;模拟Typora等工具的极简文档配图 不知道你有没有过这样的体验&#xff1a;写技术文档或者博客的时候&#xff0c;文字部分洋洋洒洒&#xff0c;逻辑清晰&#xff0c;但一到需要配图说明的地方就卡壳了…...

在对话中处理生物特征(指纹、虹膜)时,OpenClaw 的识别精度?

关于OpenClaw在生物特征识别上的精度&#xff0c;其实很难给出一个绝对的数字。这倒不是因为技术本身有什么神秘之处&#xff0c;而是因为精度这个指标&#xff0c;在实际应用中常常被误解了。 很多人一提到识别精度&#xff0c;脑子里立刻会冒出一个百分比&#xff0c;比如99.…...

【开源鸿蒙Flutter跨平台开发实战复盘】从零到一:GitCode口袋工具项目构建全记录

1. 环境搭建&#xff1a;从零开始的跨平台开发之旅 作为一个有Android开发背景但完全没接触过Flutter的开发者&#xff0c;我最初面对开源鸿蒙和Flutter跨平台开发时也是一头雾水。环境搭建这个看似简单的第一步&#xff0c;就让我深刻体会到"万事开头难"的含义。 在…...

leetcode 困难题 1505. 最多 K 次交换相邻数位后得到的最小整数

Problem: 1505. 最多 K 次交换相邻数位后得到的最小整数 从左到右遍历字符串的每个索引&#xff0c;对每个索引i&#xff0c;向后查找k窗口内的最小数字&#xff0c;右边界是min(n, ik1)&#xff0c;删去这个最小数字&#xff0c;然后将这个最小数字插入到当前索引&#xff0c;…...

s2-pro效果展示:多说话人语音合成(同一模型切换不同音色)

s2-pro效果展示&#xff1a;多说话人语音合成&#xff08;同一模型切换不同音色&#xff09; 1. 专业级语音合成效果展示 s2-pro作为Fish Audio开源的专业级语音合成模型&#xff0c;其最惊艳的能力在于同一模型支持多种音色切换。通过上传不同的参考音频&#xff0c;模型可以…...

ArcMap地图数字化实战:从加载地形图到保存成果的完整流程(附常见问题解决)

ArcMap地图数字化实战&#xff1a;从加载地形图到保存成果的完整流程&#xff08;附常见问题解决&#xff09; 在GIS领域&#xff0c;地图数字化是将纸质地图或图像转换为计算机可识别和处理的数字格式的基础工作。这项技能不仅是GIS专业学生的必修课&#xff0c;也是城市规划、…...

s2-pro语音合成教程:通过API批量提交任务+异步结果回调实现

s2-pro语音合成教程&#xff1a;通过API批量提交任务异步结果回调实现 1. 平台简介 s2-pro是Fish Audio开源的专业级语音合成模型镜像&#xff0c;它能够将文本转换为自然流畅的语音。这个工具特别适合需要批量处理语音合成任务的场景&#xff0c;比如有声书制作、客服语音生…...

文艺复兴,什么是XSS,常见形式(二)

前言 本文将继续介绍XSS的常见形状&#xff0c;依赖于portswigger提供的免费Lab环境&#xff0c;将重点介绍关于使用脚本来进行表单XSS验证以及针对标签的模糊测试。 Lab: Stored DOM XSS 这是一个存储型的DOM类的XSS&#xff0c;具体的是当你将内容提交到评论区&#xff0c…...