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

Laravel Sanctum/Fortify请求遇意外302引发CORS错误求助

解决思路与调试步骤

1. 定位重定向触发源

问题核心是后续API请求被意外重定向到API根路径,CORS错误是重定向后的连锁反应,先聚焦后端重定向逻辑排查:

  • 检查API路由归属:确保修改密码等接口注册在api中间件组下,而非web中间件组(web路由默认会在未认证时重定向到登录页,api路由应返回JSON格式未授权响应)。
  • 排查Fortify自定义逻辑:如果修改了密码处理逻辑,确认没有调用redirect()方法,而是返回response()->json();检查fortify.php的home配置仅影响登录后跳转,未干扰其他操作的响应逻辑。
  • 启用日志追踪:在.env中设置LOG_LEVEL=debug,触发请求后查看storage/logs/laravel.log,通过重定向的堆栈信息定位具体触发代码。

2. 校验Sanctum与Session配置

  • 修正SANCTUM_STATEFUL_DOMAINS:如果前端使用非80/443端口(比如Vite默认5173),需在.env中补充端口,格式为picabase.test:5173;Herd环境下若前端用默认80端口,当前配置picabase.test可行,但建议显式标注协议避免歧义。
  • 确认SESSION_DOMAIN:.picabase.test的配置支持子域共享Cookie,需同步检查SESSION_DRIVER为file或database(Herd默认配置通常没问题),SESSION_SECURE_COOKIE设为false(开发环境HTTP协议无需开启)。
  • 检查API中间件:确保接口路由使用auth:sanctum中间件,而非auth(auth默认绑定web guard,会触发重定向)。

3. 完善CORS配置

  • 强制开启supports_credentials:config/cors.php中该选项必须设为true,这是跨域请求携带Session Cookie的必要条件,否则后端无法识别已认证用户,可能触发重定向。
  • 覆盖全API路径:paths需设置为['api/*', 'sanctum/csrf-cookie'],确保所有API请求的预检规则匹配正确。
  • 明确允许源:若未设为['*'],需在allowed_origins中添加http://picabase.test(协议、域名必须完全匹配)。

4. 前端请求配置校验

  • 开启跨域凭证携带:在Vue项目的HTTP库(如Axios)全局配置中添加:
    axios.defaults.withCredentials = true;
    
  • 验证请求URL:确认修改密码等请求的目标是http://api.picabase.test/api/xxx,而非误写为前端域名路径。

5. Herd环境特殊检查

  • 确认域名映射:通过ping api.picabase.test验证域名是否正确指向本地127.0.0.1。
  • 清除浏览器缓存:跨域场景下旧Cookie可能引发异常,手动清除后重新登录测试。

内容的提问来源于stack exchange,提问作者Edwin van Dessel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:16:11