将 API 设计为只接受 JSON 格式(即强制要求 HTTP Header 中包含 ),确实可以显著降低 CSRF(跨站请求伪造)的风险。 这背后的核心原因在于:浏览器的安全机制(同源策略和 CORS)对“简单请求”和“非简单请求”的处理方式不同。 以下是详细的技术原理解析: 1. 传统的 CSRF 攻击依赖于 HTML Form 传统的 CSRF 攻击通常利用 HTML 的 标签。 攻击者会在恶意网站上构造一个表单,诱导受害者点击,或者通过脚本自动提交: HTML 表单只支持三种 : (默认) (用于文件上传) 关键点: HTML 表单无法设置 为 。 如果你的 API 严格检查 必须是 ,那么上述通过表单发起的攻击请求会被服务器直接拒绝(通常返回 415 Unsupported Media Type),因为请求头不匹配。 2. 触发 CORS 预检请求 (Preflight Request) 既然 HTML 表单做不到,攻击者如果要发送 ,就必须使用 JavaScript(如 或 API)。 当攻击者在恶意网站()通过 JS 向你的网站()发起请求,并试图设置 时,会触发浏...