部署到Cloud Run后POST请求缺失XSRF Token问题求助
Laravel + Inertia 部署Cloud Run后登录419页面过期问题
问题背景
- 技术栈:Laravel 11、Inertia、React → 打包为Docker镜像部署至Cloud Run
- 访问应用根路径
/时,按预期重定向到/login页面 - 检查到此步骤的网络请求,请求和响应中均存在X-XSRF请求头及Cookie
- 输入账号密码提交表单后,被重定向到**"419 Page Expired(页面过期)"**,此时的POST请求未携带任何X-XSRF请求头或Cookie
- 对比:本地运行该镜像时,登录功能正常,请求会自动包含X-XSRF Token
排查尝试
试过多种强制携带XSRF Token的方法,比如在表单中添加隐藏输入字段、调整中间件及各类配置项。后来发现表单提交前的前置请求其实已经包含Token,而Inertia理论上会自动处理Token携带的问题。
请求详情
目前正在尝试更多排查手段,以下是登录POST请求的完整信息:
POST /login HTTP/3 Host: inertia-react-162956230927.asia-northeast2.run.app User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:130.0) Gecko/20100101 Firefox/130.0 Accept: text/html, application/xhtml+xml Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br, zstd Content-Type: application/json Content-Length: 70 X-Requested-With: XMLHttpRequest X-Inertia: true X-Inertia-Version: ba6fd3500ad1fa8ab5152eef0ed1845b Origin: https://inertia-react-162956230927.asia-northeast2.run.app Connection: keep-alive Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin
可见请求中完全没有预期的X-XSRF Token,但在之前获取登录页面的GET请求响应中,确实返回了对应的Cookie:
XSRF-TOKEN=eyJpdiI(...)iIn0%3D; expires=Wed, 02 Oct 2024 04:24:58 GMT; Max-Age=7200; path=/; domain=inertia-react-162956230927.asia-northeast2.run.app; samesite=lax
(Token内容已截断)
希望得到以下方向的帮助:
- A. 我可能存在的理解误区
- B. 其他分析和隔离问题的方法
- C. 理清该问题的底层原理
PS:项目基本与某5小时教程配置一致,先解决部署问题再做重构,无需特意查看教程,若有人熟悉这类配置最好。
内容的提问来源于stack exchange,提问作者ClockworkOnion
相关产品推荐
相关产品推荐

