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
相关产品推荐
相关产品推荐

