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

Laravel Sanctum针对有状态API请求重复生成XSRF-TOKEN的问题排查与优化求助

Laravel Sanctum针对有状态API请求重复生成XSRF-TOKEN的问题排查与优化求助

大家好,我现在用Laravel Sanctum给NuxtJS的SPA做请求授权,基本逻辑是懂的——登录前先通过axios请求/sanctum/csrf-cookie接口获取XSRF-TOKEN,之后在会话有效期内用这个token做后续API请求。但现在遇到了两个棘手的问题,折腾了好几个配置都没解决,想请教下各位:

首先,在调用/sanctum/csrf-cookie之前,每一次API请求都会触发Laravel生成新的XSRF-TOKEN并通过Set-Cookie头返回。比如首页加载时要发4个请求拿渲染数据,每个请求的响应头里都带Set-Cookie: XSRF-TOKEN,还会一次次覆盖前端已有的token。举个例子,其中一个响应头里的Set-Cookie字段大概是这样的:

Set-Cookie: XSRF-TOKEN=eyJpdiI6Ik...; expires=Wed, 10 Jul 2024 12:34:56 GMT; Max-Age=7200; path=/; domain=localhost; HttpOnly; SameSite=Lax

其次,调用/sanctum/csrf-cookie接口时的响应头也很奇怪:它不仅返回新的XSRF-TOKEN(和其他API请求一样),还会额外返回一个格式类似的Cookie,比如some_uuid=eyJpdiI6Il...,看起来和XSRF-TOKEN的结构差不多。

说下我的环境和试过的配置:

  • 前后端都在本地用docker-compose部署,SANCTUM_STATEFUL_DOMAINS设为localhost,试过改其他值没效果
  • 调整过Session相关配置,试过的参数组合包括:
    • SESSION_DRIVER=cookie/redis/database
    • SESSION_LIFETIME=120
    • SESSION_ENCRYPT=false
    • SESSION_PATH=/
    • SESSION_DOMAIN=null/localhost
  • Laravel版本是11,已经在bootstrap/app.php里配置了$middleware->statefulApi();
  • 路由试过使用api中间件
  • Axios配置已经开启了withCredentials: true和withXSRFToken: true

现在我想搞清楚:

  1. 为什么Laravel会在每个API请求都生成新的XSRF-TOKEN?
  2. 怎么优化后端,减少这种无意义的token生成开销?
  3. 如何避免这种重复覆盖token可能导致的前后端token同步问题?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 11:58:08