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

Laravel SPA Ajax请求无法设置CSRF-COOKIE,仅新标签页访问可生效

问题原因及解决方案

核心原因:前端Fetch请求未携带凭证参数

浏览器在跨域Ajax请求中,默认不会发送或保存服务器返回的Cookie。你当前的fetch请求没有指定credentials: 'include'参数,导致服务器返回的Cookie被浏览器直接忽略。而直接在新标签页打开路由属于浏览器的同源导航请求,会自动处理Cookie存储逻辑,所以返回SPA页面后Cookie已存在。

辅助检查点

  • SESSION_DOMAIN配置:当前设置为192.168.100.110,前端端口是5173,Cookie的Domain属性本身不包含端口,这个配置理论上没问题,但要确保浏览器没有对该域名的Cookie做额外限制。
  • 协议一致性:确保前后端使用相同的协议(都是HTTP或都是HTTPS),混合协议会导致Cookie无法正常存储。

修复方法

修改前端请求代码,添加credentials: 'include'参数:

const onLogin = async () => {
  await fetch(import.meta.env.VITE_HTTP_ENDPOINT + 'sanctum/csrf-cookie', {
    credentials: 'include'
  })
}

额外建议

  1. 清除浏览器的缓存和现有Cookie,避免旧配置干扰测试。
  2. 确认cors.php中的supports_credentials已设置为true(你当前的配置已经满足这一点)。

内容的提问来源于stack exchange,提问作者João

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:23:23