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

Apache2环境下React对接Laravel Sanctum出现419错误如何解决

问题排查与解决方案

现有配置问题

你的现有配置存在两处核心错误:

  1. SESSION_DOMAIN配置不符合浏览器规则:.localhost的带点前缀写法在Chrome 80+版本中不会被认可,根域为localhost时不需要加前缀点
  2. 缺少非HTTPS环境的Cookie适配配置:本地http环境下默认开启的Secure属性会阻止Cookie存储

修复步骤

第一步:调整.env配置

替换原有相关配置为以下内容:

SESSION_DRIVER=cookie
SESSION_DOMAIN=localhost
SESSION_SECURE_COOKIE=false
SANCTUM_STATEFUL_DOMAINS=localhost:3000,site.localhost

注意本地开发使用http协议时,SESSION_SECURE_COOKIE必须设为false,带有Secure属性的Cookie只会在https请求下被浏览器存储。

第二步:校验CORS配置(config/cors.php)

确保以下配置项符合要求:

  • paths数组包含sanctum/csrf-cookie和你的登录接口路径
  • supports_credentials设为true
  • allowed_origins包含http://localhost:3000

第三步:完善前端请求逻辑

你现有的csrf获取代码是正确的,但所有后续请求(包括登录接口)都必须和csrf请求一样带上credentials: 'include'配置,漏加的话浏览器不会携带存储的Cookie,会直接返回419状态码。
参考登录请求写法:

fetch("http://site.localhost/login", {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-XSRF-TOKEN': decodeURIComponent(document.cookie.split('; ').find(row => row.startsWith('XSRF-TOKEN=')).split('=')[1])
  },
  credentials: 'include',
  body: JSON.stringify(loginData)
});

第四步:清理Laravel配置缓存

修改完配置后在Laradock工作区执行以下命令清除缓存:

php artisan config:clear
php artisan route:clear

验证操作

修改完成后打开浏览器开发者工具的存储面板:

  • 请求sanctum/csrf-cookie后,确认Cookie列表存在XSRF-TOKEN和laravel_session两个Cookie,域为localhost
  • 确认两个Cookie的Secure属性为未勾选状态,SameSite属性为Lax

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:54:04