当前位置: 首页 > 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;&#…...

【Linux 指南】文件系统系列(二):核心抽象层 —— 块 、分区 、inode 从原理到实操

上一篇我们吃透了磁盘的底层原理&#xff0c;搞懂了磁盘通过 CHS/LBA 寻址定位扇区&#xff0c;也知道扇区是磁盘硬件的最小读写单位&#xff08;512 字节&#xff09;。但随之而来的两个核心问题摆在眼前&#xff1a;一是逐个扇区读写磁盘效率极低&#xff0c;磁头的寻道和旋转…...

003-VXLAN集中式网关实验(命令详解版)

VXLAN集中式网关实验1&#xff08;命令详解版&#xff09;最近有读者私信说刚开始学习VXLAN&#xff0c;实战技巧薄弱、部分命令不是很理解&#xff0c;想循序渐进通过实验过渡到真实项目案例。下面从一个简单的集中式网关实验开始&#xff0c;通过2个基础实验和1个项目实验完成…...

智能体架构实战:从LangGraph状态机到多智能体协作

1. 从理论到实践&#xff1a;为什么我们需要一个“智能体架构大全”项目如果你在过去一年里关注过AI领域&#xff0c;尤其是大语言模型的应用开发&#xff0c;那么“智能体”这个词一定已经听得耳朵起茧了。从能帮你写代码的Devin&#xff0c;到能自主完成复杂任务的GPT-4o&…...

别再手动算归一化了!用Origin9.1的‘列公式’功能一键搞定数据预处理

用Origin9.1列公式功能高效实现数据归一化&#xff1a;从原理到实战 科研数据处理中&#xff0c;归一化是消除量纲影响、提升分析结果可比性的关键步骤。传统手动计算不仅耗时费力&#xff0c;还容易因公式输入错误导致结果偏差。Origin9.1的"列公式"功能&#xff08…...

Android HWASan 详解:硬件标记原理、Clang 启用与排障实践

Android HWASan 详解&#xff1a;硬件标记原理、Clang 启用与排障实践 HWASan&#xff08;Hardware-assisted AddressSanitizer&#xff09;是面向 AArch64 的一类 Native&#xff08;C/C&#xff09;内存错误检测机制&#xff1a;利用指针与内存区域上的 短标签&#xff08;T…...

如果你的消费观和价值观不一致,就会产生“花钱买后悔“的内耗:你的钱花对了吗?

消费观与价值观 目录 消费观与价值观 一、核心定义与层级关系 1. 价值观:人生的"底层操作系统" 2. 消费观:价值观在金钱领域的"应用程序" 二、底层原理逻辑:从进化到社会 1. 价值观的形成原理:三重塑造 2. 消费观的运行原理:价值兑换模型 3. 为什么会…...

DeepSeek API Gateway安全防护体系(零信任网关落地指南)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek API Gateway安全防护体系&#xff08;零信任网关落地指南&#xff09; DeepSeek API Gateway 作为面向大模型服务的统一入口&#xff0c;其安全架构严格遵循零信任原则——默认不信任任何网络…...

RPG Maker MV终极插件合集:100+免费插件打造专业级游戏体验

RPG Maker MV终极插件合集&#xff1a;100免费插件打造专业级游戏体验 【免费下载链接】RPGMakerMV RPGツクールMV、MZで動作するプラグインです。 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerMV 你是否曾经为RPG Maker MV的功能限制感到困扰&#xff1f;想要…...

3步快速上手Thorium浏览器:新手也能掌握的完整性能优化指南

3步快速上手Thorium浏览器&#xff1a;新手也能掌握的完整性能优化指南 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towards the top o…...

工程师视角:从生物钟原理到实战,系统化解决跨时区时差问题

1. 时差反应的本质与挑战&#xff1a;为什么我们会被“时差”困扰&#xff1f;作为一名常年需要跨时区协作的硬件工程师&#xff0c;我对“时差”这个词有着切肤之痛。无论是为了一个紧急的客户会议飞往硅谷&#xff0c;还是参加一年一度的慕尼黑电子展&#xff0c;跨越多个时区…...