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

Laravel基础学习:Post方法跳转页面提示过期问题求助

解决Laravel表单提交「页面过期」(419错误)的问题

嘿,你遇到的这个问题我之前也碰过好几次,其实就是Laravel的CSRF保护机制在生效啦!

问题根源

Laravel默认会对所有POST/PUT/DELETE类型的请求做CSRF验证,用来防止跨站请求伪造攻击。你的登录表单里没有携带CSRF令牌,所以框架直接拒绝了请求,返回了「页面过期」的提示。

快速解决方法

只需要在你的表单里添加Laravel提供的@csrf Blade指令就行,把它放在<form>标签内部的最上方:

<form method="post" action="./home" class="login-form">
    @csrf <!-- 就是这行! -->
    <input type="text" placeholder="username" name="login-username">
    <br>
    <input type="password" placeholder="pass" name="login-password">
    <br>
    <button type="submit" class="btn-login">Log In</button>
</form>

这个指令会自动生成一个隐藏的<input>字段,里面包含了正确的CSRF令牌值,Laravel就能正常验证你的请求了。

额外优化建议(可选)

为了让路由更健壮,推荐你给路由命名,然后用route()辅助函数生成表单的action路径,避免相对路径可能出现的问题:

  1. 修改web.php里的路由,加上名称:
Route::post('/home', 'loginController@index')->name('login.submit');
  1. 然后把表单的action改成:
<form method="post" action="{{ route('login.submit') }}" class="login-form">

这样不管你的项目部署在什么域名下,表单都会提交到正确的路由地址。

补充说明

CSRF保护是Laravel的核心安全机制之一,除非是API接口(可以用令牌验证),否则所有表单提交的非GET请求都必须携带CSRF令牌,千万别随便关闭这个保护哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:47:37