在Spring MVC中处理跨域请求(CORS,Cross-Origin Resource Sharing)通常涉及到配置HTTP响应头,以允许来自不同源的请求。Spring MVC提供了多种方式来配置CORS,包括全局配置和局部配置。

  1. 使用@CrossOrigin注解
    在控制器的方法上使用@CrossOrigin注解是最简单的方法之一。
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MyController {@CrossOrigin(origins = "http://example.com", maxAge = 3600)@GetMapping("/data")public MyData getData() {return new MyData("Some Data");}
}
  1. 配置WebMvcConfigurer
    如果你想要全局配置CORS,可以通过实现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("/**") // 匹配所有路径.allowedOrigins("http://example.com") // 允许的源.allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的方法.allowedHeaders("*") // 允许的头部.allowCredentials(true) // 是否发送cookies.maxAge(3600); // 预检请求的缓存时间(秒)}
}
  1. 使用GlobalCorsConfigurationSource和CorsFilter
    如果你想要更细粒度的控制或者需要在非Spring MVC环境中应用CORS,可以使用GlobalCorsConfigurationSource和CorsFilter。
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;
import java.util.Arrays;@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration config = new CorsConfiguration();config.setAllowCredentials(true);config.setAllowedOrigins(Arrays.asList("http://example.com")); // 允许的源列表config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE")); // 允许的方法列表config.setAllowedHeaders(Arrays.asList("*")); // 允许的头部列表,使用*表示接受所有头部信息source.registerCorsConfiguration("/**", config); // 对所有路径应用此配置return new CorsFilter(source);}
}
  1. 使用@CrossOrigin在全局配置中启用默认配置(不推荐)
    虽然不推荐在生产环境中使用全局的@CrossOrigin注解(因为它可能会影响到所有的接口),但在开发阶段或者在测试环境中,可以这样做:
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.context.annotation.*;
import org.springframework.*;
import java.*; // 注意:这里的导入只是为了示例,实际开发中应避免使用通配符导入所有包。
import static java.*; // 同上。
import javax.*; // 同上。
import org.*; // 同上。注意:尽量避免使用通配符导入所有包。正确的做法是只导入需要的包。例如:import org.springframework.*。这里的写法仅为示例,实际开发中请避免。正确的做法是:import org.springframework.*; import javax.*; import java.*; import java.*; import static java.*; import static javax.*; import static org.*; 这样写只是为了示例,实际开发中请避免使用通配符导入所有包。正确的做法是:只导入需要的包。例如:import org.*; 但请注意,这里的写法只是为了示例,实际开发中请

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

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

相关文章

btstack移植之安全配对(二)

3.13.3 Legacy配对首先,我们回复的paring response中,可以看到我们不支持secure connection,所以我们走的是legacy配对模式。图3-74 secure连接不支持然后,master在pairing confirm包中回复了confirm value。图3-75 master发送con…

FRP配置( CentOS 7 上安装 FRP教程 )

** 如果你们公司没有公网IP,但是又想实现内网穿透,远程调用接口,在家也能调用公司服务器,但是nkg ssl有问题,花生壳坑壁,那么FRP是你最佳的选择!!!** 不过有个前提&#…

第三次mysql作业

建立库建立mydb11_syu库2.创建s表,创建sc表二.插入数据向s表插入数据2.向sc表插入数据三.查询1.分别查询student表和score表的所有记录2.查询student表的第2条到5条记录3.从student表中查询计算机系和英语系的学生的信息4.从student表中查询年…

不同场景下git指令的搭配

添加账号 git config --global user.name "YourName" git config --global user.email "your_emailexample.com"设置 Git 默认分支名称为 main: git config --global init.defaultBranch main初始化仓库: git init配置SSH 密钥 如果…

NLP——迁移学习

一、迁移学习的概念 1.预训练模型(Pretrained model) 定义: 简单来说别人训练好的模型。一般预训练模型具备复杂的网络模型结构;一般是在大量的语料下训练完成的。 2.微调(Fine-tuning) 定义:一般是对预训练语言模型,进行垂直领域数据的微调,…

Ubuntu 安装

文章目录硬件准备下载 Ubuntu 镜像创建可启动 USB从 USB 驱动器启动安装 Ubuntu不要忘记更新!用了十多年的笔记本,手边正好有个500G的固态,准备换上。考虑到机器的硬件配置,现在使用windows10实在是有点卡,ubuntu却刚好…

【46】MFC入门到精通——MFC显示实时时间,获取系统当前时间GetCurrentTime()、获取本地时间GetLocalTime()

文章目录1 MFC获取时间方法方法一:获取系统当前时间GetCurrentTime()方法二:获取本地时间GetLocalTime()使用GetTickCount()获取程序运行时间2 MFC显示实时时间 使用方法2.1 获取时间2.2 类向导 添加定时器函数 OnTimer2.3 初始化 设置定时器2.4 定时器函…

Linux717 SWAP扩容;逻辑卷条带化

root192.168.235.20s password:┌────────────────────────────────────────────────────────────────────┐│ • MobaXterm 20.0 • ││ …

人类社会发展过程中的熵增定律

引子研究美国罗斯福新政期间的法案为什么会对美国经济恢复起作用?与千金买马骨和移木赏金之间的区别与联系?以下为豆包 AI回答一、罗斯福新政法案对美国经济起作用的原因罗斯福新政(1933-1939年)通过一系列政策应对大萧条&#x…

Spring-AI系列-入门篇-核心概念、组件和生产要素

原文-Spring AI知识库,欢迎大家评论互动 师父领进门,修行靠自己。 Spring AI is an application framework for AI engineering. Its goal is to apply to the AI domain Spring ecosystem design principles such as portability and modular design an…

从浏览器到服务器:TCP 段的网络传输之旅

本文以简化的网络架构为例,详细介绍了当你在浏览器中输入网址(例如www.google.com)并按下回车键后,TCP段的完整传输过程。我们将探讨DNS解析、ARP、TCP/IP封装、PAT和路由如何协同工作,将数据从个人电脑通过局域网和广…

HCIE - 云计算拿下后的职业选择如何规划?

Hello!大家好,小编是一名专注 IT 领域的资深探索家。我们聊聊HCIE - 云计算,这个认证作为华为认证体系中云计算领域的专家级认证,标志着持有者具备企业级云架构设计、复杂云平台运维及跨场景技术落地能力。但认证本身只是职业进阶…

1-创建Vue3项目

创建Vue3项目前提 已安装 18.3 或更高版本的 Node.js vue 官网 https://vuejs.org/ 创建一个 Vue 应用 ① 新建项目目录,使用 VSCode 打开 VSCode 可安装 Vue-Official 插件协助开发 ② 执行 create vue 指令创建 vue 应用 npm create vuelatest这一指令将…

Codex,Copilot 是什么

Codex是什么 Codex 是 OpenAI 研发的一款专注于代码生成的大型语言模型,它可以根据自然语言描述自动编写程序代码,在软件开发、自动化测试等领域展现出了强大的应用潜力。下面为你详细介绍: 1. 核心功能 代码生成:Codex 能够依据自然语言指令生成代码,像函数、类或者完整…

Typecho插件开发:自定义表单验证规则addRule实战指南

文章目录 Typecho表单验证进阶:为插件和主题添加自定义addRule验证规则 引言 一、Typecho表单验证基础 1.1 Typecho表单系统概述 1.2 addRule方法解析 二、自定义验证规则实现 2.1 创建自定义验证类 2.2 注册自定义验证规则 2.3 使用自定义验证规则 三、高级验证场景实现 3.1 …

数据分布是如何影响目标检测精度的

文章目录一、研究背景与目标模型效果提升数据集优化二、研究问题明细各方向的关联性与核心逻辑1. 高质量数据集的高效筛选与主动学习应用2. 基于推理结果的数据补充与增强方向优化3. 多类别场景下目标尺度与模型精度的关联性4. 损失函数与数据增强对精度的量化影响5. 目标类型专…

Python 网络爬虫 —— 代理服务器

一、会话(Session)(一)核心逻辑HTTP 本身无记忆,每次请求独立。会话(Session) 就是为解决这问题,让客户端(浏览器)和服务器 “记住” 交互状态(比…

Vue在线预览Excel和Docx格式文件

前提:本次示例基于Vue2.x,所用插件为Vue-Office。 一、Vue-Office 插件简介 Vue-Office 是一个一站式解决方案,支持多种 Office 文件格式的在线预览,包括: Word(.docx)Excel(.xlsx、…

提升(Boosting)及 Python 示例

咱们结合这张图,把 “提升” 想象成 “做错题本 请老师补课” 的过程:第一波数据(最上面的圆圈):“第一次作业”假设你第一次做 100 道数学题(图中圆圈里的绿点白点代表不同的题),做…

【生产实践】Linux中NAS挂载丢失后提示“过旧的文件句柄”错误解决

太长不看版: 问题:nas挂载在系统里掉了,使用df或ls访问目录提示过旧的文件句柄解决过程: 和机房联系,发现NAS服务器重启了重新执行mount发现挂不上先umount掉当前挂载,再重新执行mount命令问题解决 umount …