news 2025/12/24 17:07:49

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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/15 12:07:18

前端设计模式:详解、应用场景与核心对比

前端设计模式:详解、应用场景与核心对比 前端设计模式是解决前端开发中重复出现的问题的标准化解决方案,涵盖创建型、结构型、行为型三大类核心模式,同时包含前端特有的适配型模式(如发布-订阅、MVVM等)。本文结合前端…

作者头像 李华
网站建设 2025/12/15 12:05:43

JoltPhysics球体碰撞边缘优化:从理论到工程实践

JoltPhysics球体碰撞边缘优化:从理论到工程实践 【免费下载链接】JoltPhysics A multi core friendly rigid body physics and collision detection library, written in C, suitable for games and VR applications. 项目地址: https://gitcode.com/GitHub_Trend…

作者头像 李华
网站建设 2025/12/15 12:04:15

30亿参数掀起企业AI革命:IBM Granite 4.0如何重塑部署范式

30亿参数掀起企业AI革命:IBM Granite 4.0如何重塑部署范式 【免费下载链接】granite-4.0-h-small-bnb-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/granite-4.0-h-small-bnb-4bit 导语 当企业还在为传统大模型部署的高昂成本和资源需求发愁…

作者头像 李华
网站建设 2025/12/15 12:04:07

企业级工业物联网网关:iioiot/iotgateway如何重塑智能制造数据架构

企业级工业物联网网关:iioiot/iotgateway如何重塑智能制造数据架构 【免费下载链接】iotgateway 基于.NET8的跨平台物联网网关。通过可视化配置,轻松的连接到你的任何设备和系统(如PLC、扫码枪、CNC、数据库、串口设备、上位机、OPC Server、OPC UA Serv…

作者头像 李华