You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular/Play应用中CSRF错误引发403的原因咨询

你的CSRF问题根源解析

这个问题的核心是Play框架的CSRF防护机制与Angular传递CSRF token的方式不匹配,具体拆解来看:

  1. Play默认的CSRF校验逻辑限制
    Play的CSRF过滤器对不同请求内容类型的校验规则不一样:

    • 对于表单类请求(比如application/x-www-form-urlencoded、multipart/form-data),它会自动检查表单字段或者Cookie里的CSRF token;
    • 但对于application/json类型的JSON请求,它默认不会去检查请求头里的token——而这恰恰是Angular传递CSRF token的常规方式。
  2. Angular与Play的token传递路径不兼容
    Angular的HttpClient默认会自动从Cookie中读取XSRF-TOKEN,然后在请求头里带上X-XSRF-TOKEN字段来传递CSRF token。但Play默认没配置去识别这个请求头,所以当你的Angular客户端发送application/json类型的请求到/ws/users/add时,Play的CSRF过滤器找不到它预期的token,直接返回403拒绝请求,控制台的警告信息[CSRF] Check failed because application/json for request /ws/users/add也直接点明了是请求类型为application/json导致的校验失败。

另外还可能存在两个具体的细节问题:

  • 客户端侧:如果你的请求是自定义封装的,可能没启用Angular自带的XSRF防护,导致没有自动带上X-XSRF-TOKEN头;
  • 服务端侧:Play没有配置CSRF过滤器去读取请求头中的token,需要额外配置让它支持从X-XSRF-TOKEN这类请求头获取token。

内容的提问来源于stack exchange,提问作者Manu Chadha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:54:23