Laravel反向代理部署场景下POST请求返回419 Page Expired错误
排查方向
- 首先修正请求目标地址错误:你当前提交的POST请求地址是
http://localhost.dev:8000/signin,但你的前端是通过https://localhost.dev(443端口)访问,带8000端口的请求会直接绕过mitmproxy命中应用容器,导致域名、端口校验不匹配。请检查Blade表单的action属性是否写死了端口,以及APP_URL配置是否多余携带了8000端口,确保表单提交的目标地址为https://localhost.dev/signin。 - 调整Session域名配置:你当前.env中
SESSION_DOMAIN配置为.localhost.dev(带前导点),但响应返回的Cookie域为不带前导点的localhost.dev,两者不一致会导致Session读取失败。请将SESSION_DOMAIN改为localhost.dev,同时检查config/session.php中domain配置项是否正确读取.env值,无硬编码冲突。 - 校验CSRF Token匹配性:先清空浏览器中
localhost.dev域名下的所有旧Cookie,重新发起请求后,在VerifyCsrfToken中间件中临时加日志输出解密后的XSRF-TOKENCookie值,与表单提交的_token参数对比,确认两者是否一致。 - 确认代理头传递正确性:检查mitmproxy的反向代理配置是否保留了原始请求的
Host头,避免应用拿到的请求Host为app:8000而非localhost.dev。可在应用入口临时输出$request->getHost()、$request->getScheme()确认拿到的域名、协议是否和前端访问的一致。 - 修正Sanctum配置格式:将
SANCTUM_STATEFUL_DOMAINS配置中的逗号后空格移除,改为localhost.dev,localhost,app,避免解析时识别到带空格的无效域名。
内容的提问来源于stack exchange,提问作者Florian Neumann
相关产品推荐
相关产品推荐

