当前位置: 首页 > news >正文

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精细化控制
http://www.cnnetsun.cn/news/62222.html

相关文章:

  • 15 分钟获现场信号,30 分钟建指挥链路!分布式系统赋能救援 “秒响应”
  • 自动化测试中的常见陷阱与规避
  • 6-4 WPS JS宏 不重复随机取值应用
  • 《余行论》第七篇:历史篇
  • 《余行论》第九篇:证验篇
  • 构建动态响应式动画架构:lottie-ios与现代数据流技术融合实践
  • 起薪 15K+!网安领跑 2025IT 转行 6 大榜,政策红利 + 百万缺口,路径直接抄
  • 小程序商城搭建 自带拼团砍价功能 快速引爆销量
  • 海外网红营销:超越促销,用“圣诞故事”绑定品牌情感
  • Qwen3-32B双模式大模型:重构企业AI效率的范式革命
  • 9、深入探索AppStack:创建、分配、测试与管理全流程
  • 12、ThinApp与App Volumes结合应用及Horizon View集成指南
  • 16、在 Citrix XenApp 环境中部署 App Volumes
  • 国开(铸造学院开放大学)25秋《生产与运作管理》形考任务1【标准答案】
  • DETR 2025新突破:从农业到工业的实时检测革命
  • 深度学习优化参数深度解析:揭秘学习率调度的实战指南
  • 不写一行代码,把大模型变成安全编码专家 | LLaMA-Factory 微调实战
  • Vue2 - VDOM 和双端Diff算法
  • 40、Sendmail 配置与规则详解
  • 44、网络新闻:Usenet与C News深度剖析
  • 46、C News系统使用与维护全解析
  • OptiScaler游戏画质优化工具深度解析
  • 16、Yocto项目开发工具与流程详解
  • 25、深入解析Linux相关技术:从CGL到汽车级Linux
  • Nature同款 | 跟着顶刊学配色第 26 期
  • Gin框架架构详解:高性能Go语言Web框架的设计哲学与实践
  • 【OpenHarmony】轻量级公共基础库commonlibrary_utils_lite
  • 41、Linux系统深入解析与操作指南
  • SSM小型餐饮综合管理系统j1c7m(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • 2025年计算机类专业的就业分析