news 2026/10/26 17:31:59

SpringBoot 跨域报错

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot 跨域报错

跨域问题产生的原因

2. 违反安全规范

W3C 的 CORS 规范和各大安全审计标准(如 OWASP)都明确指出:

  • 🛡️ 核心原因:防止敏感数据泄露

    当你配置allowedOriginPatterns("*")并且允许凭据(allowCredentials=true)时,你实际上是在告诉浏览器:

    “任何网站都可以向我的服务器发送请求,并且可以携带用户的登录信息(Cookie)。”

    这会带来严重的安全隐患:

    1. 跨站请求伪造 (CSRF) 与数据窃取

    如果生产环境允许所有域名(*)携带凭据访问,攻击者可以制作一个恶意网页(例如通过钓鱼邮件诱导你打开):

  • 攻击原理:恶意网页中的 JavaScript 代码会利用你的浏览器(此时你可能已经登录了公司的内部系统)向你的 API 服务器发送请求。
  • 后果:因为服务器配置了*,浏览器会允许这个跨域请求,并自动带上你的 Cookie。服务器收到请求后,误以为是你本人在操作,就会返回敏感数据(如用户资料、订单信息等)给恶意网站。
  • 结果:用户的隐私数据被窃取,甚至账户被恶意操作。
  • 当Access-Control-Allow-Credentials: true时,Access-Control-Allow-Origin绝对不能是*。
  • 必须显式指定具体的域名,以确保信任边界清晰。

SpringBoot 中常见的跨域报错

  • 前端控制台报错示例

解决方案:全局 CORS 配置

📊 代码参数与 HTTP 头的映射

为了让你更直观地看到代码是如何变成 HTTP 协议的,整理了这个对应表:

你的代码配置生成的 HTTP 响应头作用说明
.allowedOriginPatterns("*")Access-Control-Allow-Origin: *允许任何域名访问资源
.allowedMethods("GET", "POST"...)Access-Control-Allow-Methods: ...告诉浏览器允许使用的 HTTP 动词
.allowedHeaders("*")Access-Control-Allow-Headers: ...允许请求中携带的自定义头字段
.allowCredentials(true)Access-Control-Allow-Credentials: true允许携带 Cookie 或认证信息
.maxAge(3600)Access-Control-Max-Age: 3600预检请求缓存 1 小时,减少重复 OPTIONS 请求
  • 使用WebMvcConfigurer配置全局跨域
  • 示例代码:
    @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("GET", "POST", "PUT", "DELETE"); } }
最佳实践建议
  • 生产环境避免使用*通配符
  • 结合具体业务限制allowedOrigins
  • 使用allowedHeaders精细化控制
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 23:50:34

15 分钟获现场信号,30 分钟建指挥链路!分布式系统赋能救援 “秒响应”

进入二十世纪以来,全球气候异常加剧,环境破坏引发的连锁反应日益显著 —— 地震震级攀升、洪水波及范围扩大、台风登陆频次增多、山火蔓延速度加快,各类自然灾害不仅造成巨大的人员伤亡与财产损失,更对突发事件的应急响应速度、指…

作者头像 李华
网站建设 2026/10/26 4:58:10

自动化测试中的常见陷阱与规避

随着软件交付周期的不断缩短,自动化测试已成为保障产品质量的关键手段。然而,许多团队在实施过程中陷入重复性陷阱,导致投入产出比失衡。 一、常见陷阱深度解析 1. 过度追求覆盖率陷阱 现象:盲目要求100%测试覆盖率,…

作者头像 李华
网站建设 2026/10/26 4:57:28

6-4 WPS JS宏 不重复随机取值应用

1.示例:function 不重复随机取值(){var snew Set();if(10-1>8){while(true){var numWorksheetFunction.RandBetween(1,10);//RandBetween(1,10)为随机函数s.add(num);if(s.size8){break};//size为集合的个数}}var arr[...s]Console.log(${arr})}function 不重复随…

作者头像 李华
网站建设 2026/10/27 2:54:23

《余行论》第七篇:历史篇

第七篇:历史篇——文明如长河,兴衰皆余行引言:历史是宇宙的备忘录,还是人类的独白?历史是什么?是帝王将相的谱系,是战争与和平的循环,是生产力进步的阶梯,还是偶然事件的…

作者头像 李华
网站建设 2026/10/26 18:32:22

《余行论》第九篇:证验篇

第九篇:证验篇——理可玄思,亦可实证引言:从哲学构想到科学纲领前八篇构建的“余行论”,以其宏大的视野与内在的融贯性,描绘了一幅从宇宙本源到人类文明的统一图景。然而,一个深邃的哲学思辨若想真正成为推…

作者头像 李华
网站建设 2026/10/26 2:56:46

构建动态响应式动画架构:lottie-ios与现代数据流技术融合实践

构建动态响应式动画架构:lottie-ios与现代数据流技术融合实践 【免费下载链接】lottie-ios airbnb/lottie-ios: Lottie-ios 是一个用于 iOS 平台的动画库,可以将 Adobe After Effects 动画导出成 iOS 应用程序,具有高性能,易用性和…

作者头像 李华