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

Play Framework生产环境认证异常:X-XSRF-TOKEN请求头未自动添加

排查部署后X-XSRF-TOKEN请求头丢失的问题

嘿,这种本地跑好好的,一部署就掉CSRF Token的坑我踩过好几次!咱们一步步来排查最常见的原因:

1. 先检查Cookie的核心属性是否正确

部署后环境通常是HTTPS,浏览器对Cookie的限制比本地HTTP严格得多:

  • Secure属性:必须设为true,否则浏览器不会在HTTPS请求中携带这个Cookie。你可以打开浏览器开发者工具,到Application→Cookies里查看XSRF-TOKEN的Secure状态。
  • SameSite属性:别设成Strict,不然跨域(比如前端和后端域名不同)场景下浏览器不会自动携带Cookie。推荐设为Lax,如果是完全跨域的情况就设为None(注意设None必须同时开启Secure)。

2. 确认Cookie的Domain和Path配置

如果前端和后端不是同一个域名,Cookie的范围配置很关键:

  • Domain:要设为两者的公共父域,比如后端是api.example.com、前端是app.example.com,Domain就设为.example.com(注意前面的点)。如果是同域名不同端口,Domain可以留空或者设为当前域名。
  • Path:直接设为/,确保所有路径的请求都能访问到这个Cookie,别局限在某个特定路径下。

3. 前端请求库的Credentials配置

如果用的是axios、fetch这类工具,得确保开启了携带Cookie的权限:

  • 用axios的话,要设置withCredentials: true,比如:
    axios.defaults.withCredentials = true;
    // 顺便确认下默认的Cookie和头名是否匹配你的配置
    axios.defaults.xsrfCookieName = 'XSRF-TOKEN';
    axios.defaults.xsrfHeaderName = 'X-XSRF-TOKEN';
    
  • 用fetch的话,要在请求选项里加credentials: 'include':
    fetch('/api/xxx', {
      credentials: 'include',
      // 其他配置...
    });
    

4. 部署环境的代理/CDN是否拦截了Cookie

如果用了Nginx、Cloudflare这类中间件,很可能它们默认修改或丢弃了Cookie:

  • Nginx代理的话,要确保配置里保留了Cookie:
    location /api {
      proxy_pass http://your-backend;
      proxy_set_header Cookie $http_cookie;
      proxy_set_header X-Forwarded-Proto $scheme; # 确保后端能识别HTTPS
      # 别加 proxy_hide_header Set-Cookie; 这类会隐藏Cookie的配置
    }
    
  • 若用了CDN,要在CDN控制台里把XSRF-TOKEN添加到允许传递的Cookie列表中,避免被CDN过滤掉。

5. 后端CORS配置是否正确

后端的跨域配置必须配合前端的Credentials设置:

  • 要把Access-Control-Allow-Credentials设为true,同时Access-Control-Allow-Origin不能是*,必须指定具体的前端域名(比如https://app.example.com)。
  • 还要确保Access-Control-Allow-Headers里包含X-XSRF-TOKEN,不然浏览器会拦截带这个头的请求。

最后一步:精准定位问题

如果以上都排查了还是不行,打开浏览器Network标签:

  1. 先看登录请求的响应头里有没有Set-Cookie: XSRF-TOKEN=xxx; ...,确认Cookie有没有被正确种下。
  2. 再看后续请求的Cookie头里有没有XSRF-TOKEN=xxx,确认Cookie有没有被携带。
  3. 最后看请求头里有没有X-XSRF-TOKEN: xxx,判断是前端没自动生成这个头,还是Cookie根本没带上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:30:08