解决 POST 请求中 VerifyCsrfToken.php 中的 TokenMismatchException

Solving TokenMismatchException in VerifyCsrfToken.php in POST request

我是 Laravel 的新手。我已经为 GET 和 POST 创建了一些路由,但唯一可以正常工作的是 GET 路由。 POST 总是 returns TokenMismatchException,即使内部进程和数据库查询正确执行。我在SO上看到的一些题目一般都是讲AJAX,解决方法涉及发送token。但是我还没有使用任何 AJAX...,通常答案是说如果我使用普通的 POST 形式,Laravel 将插入一个隐藏的标记。

这是路线代码:

Route::post('/practice/{level_id?}/{group_id?}/{command?}', 'WebController@practice');
Route::get('/practice/{level_id?}/{group_id?}/{command?}', 'WebController@practice');

这是我在网络控制器上接收它的方式:

public function practice($level_id = "", $group_id = "", $command = "")

有什么问题吗?什么可能导致我的 POST 请求失败?谢谢

请在您使用 Laravel 表单生成器的 form.If 中添加一个隐藏字段,然后当您执行 Form::open().[=14 时它会自动向您的表单添加一个隐藏标记字段=] 试试这样的东西:

<input name="_token" type="hidden"  value="{{ csrf_token() }}">

如果你使用的Form::open方法没有新版本的Laravel你必须从here安装它,那么就不会有TokenMismatchException的问题。但是,如果您使用 HTML5 表单标签,则需要在 HTML 表单中添加 {{ csrf_field() }},这将生成

<input type="hidden" name="_token" value="53sfsffxth7AYe4RFSjzaPf2ygLCecJhbkhblah">