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

Laravel 5.6 POST表单提交失败:页面过期报错求助

解决Laravel表单提交"The page has expired due to inactivity"错误

嘿,这个问题我太熟了——你遇到的是Laravel默认开启的CSRF保护机制触发的错误,核心原因就是你的表单里少了关键的CSRF令牌字段!

问题根源

Laravel为了防范跨站请求伪造(CSRF)攻击,默认会对所有POST、PUT、DELETE等非GET类型的请求验证CSRF令牌。如果你的表单提交时没有携带正确的令牌,框架就会返回这个“页面过期”的提示(本质是HTTP 419状态码)。

快速解决方法

只需要在你的表单内部添加Laravel提供的@csrf Blade指令即可,它会自动生成一个隐藏的CSRF令牌输入字段:

<form action="{{url('confirm')}}" method="POST" enctype="multipart/form-data">
    @csrf <!-- 就是这一行,放在表单最上方或者其他隐藏字段附近都可以 -->
    <input type="hidden" value="idproof" id="id" name="id" >
    <input type="hidden" value="nameproof" id="name" name="name" >
    <!-- 你的确认按钮和其他表单元素 -->
</form>

备选方案

如果你习惯用辅助函数,也可以用csrf_field()来替代@csrf,效果完全一样:

<form action="{{url('confirm')}}" method="POST" enctype="multipart/form-data">
    {{ csrf_field() }}
    <input type="hidden" value="idproof" id="id" name="id" >
    <!-- 其余代码不变 -->
</form>

额外提示

如果你之后需要用AJAX提交这类请求,记得在请求头里带上X-CSRF-TOKEN,可以通过页面里的meta标签获取(通常Laravel默认的模板里已经包含这个meta标签了)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:16:10