Spring Boot 中实现跨域的几种方式

前言
在现代Web应用中,由于安全性和隐私的考虑,浏览器限制了从一个域向另一个域发起的跨域HTTP请求。解决这个问题的一种常见方式是实现跨域资源共享(CORS)。Spring Boot提供了多种方式来处理跨域请求,本文将介绍其中的几种方法。

1. 使用@CrossOrigin注解
Spring Boot提供了一个注解@CrossOrigin,可以直接应用于控制器类或方法上,以声明允许跨域请求的配置。例如:

@RestController
@CrossOrigin(origins = "http://localhost:3000")
public class MyController {// Controller methods
}

这种方法简单明了,但可能不够灵活,特别是当需要配置更多的跨域选项时。

2. 使用WebMvcConfigurer配置
通过实现WebMvcConfigurer接口,可以进行更细粒度的跨域配置。下面是一个例子:

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/api/**").allowedOrigins("http://localhost:3000").allowedMethods("GET", "POST", "PUT", "DELETE").allowCredentials(true);}
}

这种方式允许更多的自定义配置,适用于复杂的跨域场景。

3. 使用Filter配置
通过自定义Filter来处理跨域请求也是一种有效的方式。创建一个CorsFilter类,实现Filter接口:

@Component
public class CorsFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletResponse httpResponse = (HttpServletResponse) response;httpResponse.setHeader("Access-Control-Allow-Origin", "http://localhost:3000");httpResponse.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");httpResponse.setHeader("Access-Control-Allow-Credentials", "true");chain.doFilter(request, response);}
}

然后,将该Filter注册到Spring Boot应用中。

4. 使用全局配置
在application.properties或application.yml中添加全局配置项:

spring.mvc.cors.allowed-origins=http://localhost:3000
spring.mvc.cors.allowed-methods=GET,POST,PUT,DELETE
spring.mvc.cors.allow-credentials=true

这种方式不需要编写额外的Java代码,适用于全局的跨域配置。

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

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

相关文章

C语言字符串处理提取时间(ffmpeg返回的时间字符串)

【1】需求 需求:有一个 “00:01:33.90” 这样格式的时间字符串,需要将这个字符串的时间值提取打印出来(提取时、分、秒、毫秒)。 这个时间字符串从哪里来的? 是ffmpeg返回的时间,也就是视频的总时间。 下…

vs快捷键

ctrlMo 折叠代码块 ctrlML 打开代码块

电子电器架构(E/E)演化 —— 主流主机厂域集中架构概述

电子电器架构(E/E)演化 —— 主流主机厂域集中架构概述 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。…

系列七(实战)、发送 接收单向消息(Java操作RocketMQ)

一、发送 & 接收单向消息 1.1、概述 发送单向消息,适用于发送方不关心或者不在意消息的发送结果,这种方式的吞吐量很大,但是存在消息丢失的风险,对于重要消息要慎用!该种方式通常适用于对消息没有那么严格的场景中…

类和对象的创建和实例化

1. 类的概述 1.1 具体示例 类是描述一类事物的特征和行为的统称,抽象的不存在的,泛指的概念,例如:描述一个人,从外观上(特征)和言行举止(行为)上进行描述外观上&#xff…

c 语言学习:输出阶乘的算式

c 语言学习&#xff1a;输出阶乘的算式 代码 #include "stdio.h"int fact(int num){if (num < 1){printf("1 ");return 1;} else {printf("%d x ",num);return num * fact(num-1);} }int main(){int num 10; // printf("plz inpu…

【华为OD题库-107】编码能力提升计划-java

题目 为了提升软件编码能力&#xff0c;小王制定了刷题计划&#xff0c;他选了题库中的n道题&#xff0c;编号从0到n-1&#xff0c;并计划在m天内按照题目编号顺序刷完所有的题目(注意&#xff0c;小王不能用多天完成同一题) 在小王刷题计划中&#xff0c;小王需要用time[i]的时…

老鹰目标检测数据集VOC格式60张

老鹰是天空中的王者&#xff0c;它们拥有极佳的飞行能力。它们能以惊人的速度在天空中翱翔&#xff0c;尤其擅长高空俯冲捕食。老鹰的视力非常敏锐&#xff0c;能够准确地发现地面上的猎物&#xff0c;并迅速下落抓取。它们的爪子强而有力&#xff0c;足以击倒比自己体型庞大的…

云计算与大数据之间的羁绊(期末不挂科版):云计算 | 大数据 | Hadoop | HDFS | MapReduce | Hive | Spark

文章目录 前言&#xff1a;一、云计算1.1 云计算的基本思想1.2 云计算概述——什么是云计算&#xff1f;1.3 云计算的基本特征1.4 云计算的部署模式1.5 云服务1.6 云计算的关键技术——虚拟化技术1.6.1 虚拟化的好处1.6.2 虚拟化技术的应用——12306使用阿里云避免了高峰期的崩…

NAT路由器,将内网ip转换为外网ip

Network Address Translation&#xff0c;网络地址翻译。 概念 NAT就是在局域网内部使用内部地址&#xff0c;而当内部节点要与外部网络通信时&#xff0c;在网关将内部地址替换为公用地址&#xff0c;从而在外部网关正常使用。 NAT表是转换的核心 NAT路由器有NAT表&#xf…

0基础学习VR全景平台篇第131篇:曝光三要素—光圈

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 我们经常从电视或书刊上看到这样的照片&#xff0c;照片的主体清晰&#xff0c;前后镜朦胧虚化&#xff0c;整体看起来非常的漂亮。那这样的照片是如何拍出来的呢&#xff1f;他和…

为什么要出现并发?并发的三要素

大家好&#xff0c;我是"java继父"伯约&#xff0c;假如这篇对大家有帮助的话求一个赞&#xff0c;另外文章末尾放了我从小白到架构师多年的学习资料。 1.为什么需要多线程 众所周知&#xff0c;CPU、内存、I/O 设备的速度是有极大差异的&#xff0c;为了合理利用 C…

Vue编写登录注册页面前端校验

登录注册校验 template页面 <div class"app-login"><!--登录 --><div class"form"><el-form ref"form" size"large" autocomplete"off" v-if"isLogin" :model"registerData" :r…

FXCM福汇官网:深入解析BOLL指标的喇叭口形态及含义

BOLL指标是一种通过布林线&#xff08;Bollinger Bands&#xff09;的上轨线、中轨线和下轨线的相互关系来判断市场趋势和波动性的技术分析工具。BOLL指标的喇叭口形态包括开口型、收口型和紧口型&#xff0c;它们各自具有独特的含义。 《FXCM福汇官网开户》 1. 开口型喇叭口…

cesium实现二三维联动

记录项目中实现二三维地图联动 效果如下&#xff1a; 第一步&#xff1a;现在页面中加载二三维地图&#xff08;地图的初始化已省略&#xff09; <template><div><div><button click"show">二三维联动</button></div><div&…

Go Web 编程

Go Web 编程 更新于 1年前 一步步带你进入 Go Web 编程的世界,让我们开始探索吧! 文档类型:系统文档 文章统计:96 篇,字数 12.52 万,点赞 508 文章列表所有讨论 基本信息 关于本书 第一章. Go 环境配置 01.0. Go 环境配置 01.1. 安装 Go 01.2. GOPATH 与工作空间 …

经典文献阅读之--RenderOcc(使用2D标签训练多视图3D Occupancy模型)

0. 简介 3D占据预测在机器人感知和自动驾驶领域具有重要的潜力&#xff0c;它将3D场景量化为带有语义标签的网格单元。最近的研究主要利用3D体素空间中的完整占据标签进行监督。然而&#xff0c;昂贵的注释过程和有时模糊的标签严重限制了3D占据模型的可用性和可扩展性。为了解…

[HADOOP]数据倾斜的避免和处理

避免数据倾斜 初始设计方面&#xff1a; 设计阶段考虑数据分布&#xff0c;并尽可能确保数据均匀分布。 预处理数据&#xff1a; 在数据加载到 Hadoop 之前进行预处理&#xff0c;以减少倾斜。使用抽样或统计方法来了解数据分布特征&#xff0c;并据此调整。 使用合适的Partiti…

EtherCAT主站SOEM -- 11 -- EtherCAT从站 XML 文件解析

EtherCAT主站SOEM -- 11 -- EtherCAT从站 XML 文件解析 1 EtherCAT 从站信息规范1.1 XML 文件说明1.1.1 XML 数据类型1.1.2 EtherCATInfo1.1.3 Groups1.1.4 Devices1.1.5 Modules1.1.6 Types1.1.6.1 AccessType 的组成1.1.6.2 ArraylnfoType 的组成1.1.6.3 DeviceType 的组成1.…

Mendelson AS2 介绍下载和配置

最近与一家国外公司做EDI对接&#xff0c;并且EDI通讯工具是基于AS2协议的。目前开源的as2的开源项目有openas2,Mendelson AS2&#xff0c;和国人写的freeas2但是&#xff0c;现在freeas2已经被从开源中国不能下载了&#xff0c;变为收费的版本了。 如果你需要使用基于AS2协议…