在Laravel 5.7,laravel 5.8中发布请求---错误-419对不起,您的会话已过期

时间:2018-10-01 02:25:10

标签: php laravel

我安装了Laravel 5.7

已将表单添加到文件<form method="POST" action="/foo" > @csrf <input type="text" name="name"/><br/> <input type="submit" value="Add"/> </form>

\routes\web.php

已添加到文件Route::post('/foo', function () { echo 1; return; });

5.6

发送POST请求后:

  

419对不起,您的会话已过期。请刷新,然后重试。

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Diagnostics; namespace StopwatchTimer { public partial class Form1 : Form { private static readonly Stopwatch watch = new Stopwatch(); private long diff = 0, previousTicks = 0, ticksDisplayed = 0; public Form1() { InitializeComponent(); richTextBox1.TabStop = false; richTextBox1.ReadOnly = true; richTextBox1.BackColor = Color.White; richTextBox1.Cursor = Cursors.Arrow; richTextBox1.Enter += RichTextBox1_Enter; ; UpdateTime(); } private void RichTextBox1_Enter(object sender, EventArgs e) { btnStart.Focus(); } private void UpdateTime() { richTextBox1.Text = GetTimeString(watch.Elapsed); } private string GetTimeString(TimeSpan elapsed) { string result = string.Empty; //calculate difference in ticks diff = elapsed.Ticks - previousTicks; if (radioButton1.Checked == true) { //counting up ticksDisplayed += diff; } else { //counting down ticksDisplayed -= diff; } if (ticksDisplayed < 0) { ticksDisplayed = 0; } //Make ticksDisplayed to regular time to display in richtextbox TimeSpan ctimeSpan = new TimeSpan(ticksDisplayed); result = string.Format("{0:00}:{1:00}:{2:00}.{3:000}", ctimeSpan.Hours, ctimeSpan.Minutes, ctimeSpan.Seconds, ctimeSpan.Milliseconds); previousTicks = elapsed.Ticks; return result; } private void Form1_Load(object sender, EventArgs e) { } private void btnStart_Click(object sender, EventArgs e) { if (btnStart.Text == "START") { watch.Reset(); watch.Start(); UpdateTime(); btnStart.Text = "STOP"; timer1.Enabled = true; } else { watch.Stop(); btnStart.Text = "START"; btnPause.Text = "PAUSE"; timer1.Enabled = false; } } private void btnReset_Click(object sender, EventArgs e) { watch.Reset(); TimeSpan ctimeSpan = new TimeSpan(0, trackBarHours.Value, trackBarMinutes.Value, trackBarSeconds.Value, 0); diff = 0; previousTicks = 0; ticksDisplayed = ctimeSpan.Ticks; trackBarHours.Value = 0; trackBarMinutes.Value = 0; trackBarSeconds.Value = 0; richTextBox1.Text = "00:00:00.000"; } private void trackBarHours_Scroll(object sender, EventArgs e) { //get ticksDisplayed as TimeSpan TimeSpan ctimeSpan = new TimeSpan(ticksDisplayed); //change only the hour TimeSpan htimeSpan = new TimeSpan(ctimeSpan.Days, trackBarHours.Value, ctimeSpan.Minutes, ctimeSpan.Seconds, ctimeSpan.Milliseconds); //set it to ticksDisplayed and update. ticksDisplayed = htimeSpan.Ticks; UpdateTime(); } private void trackBarMinutes_Scroll(object sender, EventArgs e) { TimeSpan ctimeSpan = new TimeSpan(ticksDisplayed); TimeSpan mtimeSpan = new TimeSpan(ctimeSpan.Days, ctimeSpan.Hours, trackBarMinutes.Value, ctimeSpan.Seconds, ctimeSpan.Milliseconds); ticksDisplayed = mtimeSpan.Ticks; UpdateTime(); } private void trackBarSeconds_Scroll(object sender, EventArgs e) { TimeSpan ctimeSpan = new TimeSpan(ticksDisplayed); TimeSpan stimeSpan = new TimeSpan(ctimeSpan.Days, ctimeSpan.Hours, ctimeSpan.Minutes, trackBarSeconds.Value, ctimeSpan.Milliseconds); ticksDisplayed = stimeSpan.Ticks; UpdateTime(); } private void btnPause_Click(object sender, EventArgs e) { if (btnStart.Text == "STOP") { if (btnPause.Text == "PAUSE") { btnPause.Text = "CONTINUE"; watch.Stop(); timer1.Enabled = false; } else { btnPause.Text = "PAUSE"; watch.Start(); timer1.Enabled = true; } } } private void timer1_Tick(object sender, EventArgs e) { UpdateTime(); } } } 版中没有这样的问题。

49 个答案:

答案 0 :(得分:34)

在阅读以下内容之前,请确保您的表单中包含@csrf{{ csrf_field() }}

<form method="post">
@csrf <!-- {{ csrf_field() }} -->
... rest of form ...
</form>

出现会话过期错误消息是因为您的csrf令牌验证失败的某个地方,这意味着App\Http\Middleware\VerifyCsrfToken::class中间件已经打开。已经以@csrf刀片指令的形式添加了,也应该没问题。

然后要检查的另一个区域是会话。 csrf令牌验证直接与您的会话有关,因此您可能要检查会话驱动程序是否正常工作,例如Redis配置错误可能会引起问题。

也许您可以尝试从.env文件中切换会话驱动程序/软件,下面提供了受支持的驱动程序

Laravel 5.7中受支持的会话驱动程序 (Doc Link)

  • file-会话存储在存储/框架/会话中。
  • cookie-会话存储在安全的加密cookie中。
  • database-会话存储在关系数据库中。
  • memcached / redis-会话存储在这些基于高速缓存的快速存储区之一中。
  • array-会话存储在PHP数组中,并且不会保留。

如果在切换会话驱动程序后您的表单可以工作,则说明该特定驱动程序有问题,请尝试从此处修复错误。

可能出现错误的情况

  • 基于文件的会话可能由于/storage目录的权限问题而无法正常工作(快速搜索将为您提供解决方案)

  • 对于数据库驱动程序,您的数据库连接可能错误,或者sessions表可能不存在或配置错误(根据注释,错误的配置部分被确认为问题。 @Junaid Qadir)。

  • redis/memcached配置错误或同时被系统中的其他一些代码操纵。

执行php artisan key:generate并生成一个新的应用程序密钥可能是一个好主意,该应用程序密钥又将刷新会话数据。

清除浏览器缓存 HARD ,我发现chrome和firefox是我不记得的罪魁祸首。

Read more about why application keys are important

答案 1 :(得分:18)

这是因为表单需要一个csrf。在5.7版中,他们将其更改为@csrf

<form action="" method="post">
    @csrf
    ...

Referene: https://laravel.com/docs/5.7/csrf

答案 2 :(得分:4)

如何使用

{{ csrf_field() }}而不是@csrf

419错误主要是由于csrf令牌问题。

答案 3 :(得分:4)

要解决此错误,您首先需要在form标签中插入以下命令之一。

@csrf{{ csrf_field }}

如果您的问题仍未解决,请执行以下操作:(请注意,以上命令之一必须位于form标记中)

1。将以下命令之一插入form标签 @csrf{{ csrf_field }}

2。打开.env文件并将其值更改为SESSION_DRIVER部分中的“文件”。

3。然后您应该重置laravel缓存。在终端中输入以下命令

php artisan view:clear php artisan route:clear php artisan cache:clear

php artisan config:cache

4。最后,从服务中拔出项目,然后再次单击php artisan服务

希望您的问题得到解决

答案 4 :(得分:4)

添加csrf令牌,您的问题将得到解决。 {{csrf_token}} 要么 @csrf

答案 5 :(得分:4)

我使用Laravel 5.7 我遇到了同样的问题,这是因为csrf令牌的格式不正确,因此添加

@csrf

解决了问题

答案 6 :(得分:3)

将welcome.blade.php中的@csrf更改为<input type="hidden" name="_token" value="{{ csrf_token() }}">

所以您的代码是这样的:

<form method="POST" action="/foo" >
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>

   <button type="submit">Submit</button>
</form>

答案 7 :(得分:3)

  

情况1:如果您正在本地系统中运行项目,例如   127.0.01:8000,

然后

在您的.env文件中添加SESSION_DOMAIN=

或在您的config / session.php 'domain' => env('SESSION_DOMAIN', ''),

然后运行php artisan cache:clear

  

情况2:如果项目正在服务器上运行,并且您具有类似的域   “ mydomain.com”

在您的.env文件中添加SESSION_DOMAIN=mydomain.com

或在您的config / session.php 'domain' => env('SESSION_DOMAIN', 'mydomain.com'),

然后运行php artisan cache:clear

答案 8 :(得分:3)

尝试在\App\Http\Middleware\EncryptCookies::class中注释掉\app\Http\Kernel.php 我有类似的问题,并通过这样做解决了。 可能不是最好的解决方案,因为它具有安全性,但至少可以起作用。

以前我尝试过:

  • 清除缓存
  • 生成新的应用密钥
  • 在各种浏览器(Chrome 70,Mozilla Firefox 57和IE 11)中运行我的应用
  • 在另一台计算机上运行我的应用
  • \App\Http\Middleware\VerifyCsrfToken::class中注释\app\Http\Kernel.php
  • \Illuminate\Session\Middleware\AuthenticateSession::class中注释\app\Http\Kernel.php
  • 升级和降级Laravel(介于5.6和5.7之间)

但是以上这些都不适合我。

答案 9 :(得分:2)

您的会话可能有问题。经过这些设置后,我解决了我的问题。对我来说,这是最后的选择。

  • 如果您使用“文件”作为会话驱动程序,请查看 存储/框架/会话(如果会话在执行后被保存) 刷新。如果不是,很可能是由于文件夹不正确 权限。检查您的存储设备/文件夹是否具有正确的权限
  • 尝试禁用页面中的所有Javascript(通过禁用 通过导航器或代码内部),并确保“ http_only” =>是的,
  • 尝试在不使用https的情况下使用
  • 确保SESSION_DRIVER变量不为空
  • 尝试在'encrypt'=> false和'encrypt'=> true之间切换
  • 尝试更改cookie名称'cookie'=>'laravelsession',
  • 尝试将您的SESSION_DOMAIN设置为您的实际域,或者设置为空
  • 尝试在“安全” => env('SESSION_SECURE_COOKIE'之间切换, false)和'secure'=> env('SESSION_SECURE_COOKIE',true),

来源:Laravel Session always changes every refresh / request in Laravel 5.4

答案 10 :(得分:2)

如果您尝试了所有这些步骤,它将正常工作:

  1. 确保您的会话配置正确,最简单的方法是将其设置为文件,并确保存储文件夹具有chmod 755权限,然后在.env中按如下所示进行设置,文件会话驱动程序即为最简单的设置方法。

    SESSION_DRIVER=file
    SESSION_DOMAIN=
    SESSION_SECURE_COOKIE=false
    
  2. 确保Cache文件夹已清除且可写,您可以通过在artisan命令下运行来实现。

    php artisan cache:clear
    
  3. 确保正确设置文件夹权限,它们的配置应如下所示:

    sudo chmod -R 755 storage
    sudo chmod -R 755 vendor
    sudo chmod -R 644 bootstrap/cache
    
  4. 确保您的表单中包含@csrf令牌。

希望这可以解决您的问题。

答案 11 :(得分:1)

虽然表单中有@csrf,但仍显示419 pages has expired

我将config / session.php中的SESSION_SECURE_COOKIE选项更新为false后解决了该问题

'secure' => env('SESSION_SECURE_COOKIE', false)

比清除缓存

答案 12 :(得分:1)

在项目上打开命令行cmd。

1.command

php artisan config:cache

2.com和

php artisan route:clear

答案 13 :(得分:1)

您的应用程序标头中还包含csrf吗?

<meta name="csrf-token" content="{{ csrf_token() }}">

答案 14 :(得分:1)

419 |页面:此错误表示laravel安全问题,这意味着 csrf令牌字段使用不正确。

使用{{csrf_field}} 这样您的问题就会解决。

答案 15 :(得分:1)

默认情况下,我没有这个问题。所以我所做的是chmod -R 644 sessions 复制问题。

enter image description here

然后,我通过chmod -R 755 sessions

授予了会话文件夹权限

现在我的项目代码可以再次使用。

enter image description here

发生这种情况的原因是您将缓存存储在文件中而没有编写 权限。

  

会话配置文件存储在config / session.php中。是   请务必查看此文件中可用的选项。默认情况下,   Laravel配置为使用文件会话驱动程序,它将起作用   非常适合许多应用。在生产应用中,您可能   考虑使用memcached或redis驱动程序以提高会话速度   性能。

解决方案:

1-正如我在上面确定的那样,您可以将755权限授予session文件夹。 2-您可以使用其他会话驱动程序配置。

  

文件-会话存储在存储/框架/会话中。曲奇饼 -   会话存储在安全的加密cookie中。数据库-会话   存储在关系数据库中。 memcached / redis-会话是   存储在这些快速的基于缓存的存储之一中。数组-会话是   存储在PHP数组中,并且不会持久保存。

记住;如果要使用memcached / redis,则需要在服务器上安装它们,否则docker redis容器必须正在运行。

答案 16 :(得分:1)

转到config / sessions.php

找到行

'secure' => env('SESSION_SECURE_COOKIE', true),

将其更改为false

'secure' => env('SESSION_SECURE_COOKIE', false),

如果此参数设置为TRUE,浏览器将要求您使用HTTPS协议,否则它将不存储会话。由于无效

答案 17 :(得分:1)

我刚经历了整个过程,然后将鼠标悬停在此处以寻求答案。 就我而言,解决方案是清除浏览器历史记录。

答案 18 :(得分:1)

在我的情况下,routes.php的末尾是

。在那里花了很多时间...

答案 19 :(得分:1)

在您的Http/Kernel.php

尝试评论此行:

\Illuminate\Session\Middleware\AuthenticateSession::class,

在您的Web中间件阵列中

这可能是您问题的根源

答案 20 :(得分:0)

就我而言,删除bootstrap/cache可以解决问题

答案 21 :(得分:0)

对我来说,一旦会话无效并且用户尝试提交发布请求,就会出现错误。 csrf_token不再有效。因此我通过在Exceptions目录中更改Handler.php来克服它,并尝试捕获像这样的令牌不匹配异常。

渲染功能就是这样

public function render($request, Exception $exception)
{
    return parent::render($request, $exception);
}

然后我将其修改为这样

public function render($request, Exception $exception)
{

    if ($exception instanceof \Illuminate\Session\TokenMismatchException){ // <<<=========== the Code
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }

        return redirect('/home')->with('message', 'You page session expired. Please try again');
    }
    return parent::render($request, $exception);
}

只需选择可以处理令牌刷新操作的路由即可。

答案 22 :(得分:0)

请注意,如果您尝试上载的大小超过发布文件大小限制的大文件,则会收到错误419。 在这种情况下,您可以将upload_max_filesize和post_max_size都增加到合理的数量(例如,根据您的使用情况和资源,1000万或20M),请在此处进行检查: https://stackoverflow.com/a/2184541/2100489

但这可能会导致资源消耗问题,例如带宽和存储空间。作为解决方案,您可以在提交表单之前检查文件大小并显示警告消息。

答案 23 :(得分:0)

像这样在.blade.php文件{{ csrf_field() }}@csrf上的表格中添加

<form method='POST' action='route("exampleRoute")'>
   {{ csrf_field() }} or @csrf
   ....
   ....
</form>

答案 24 :(得分:0)

app / Exceptions / Handler.php中的一些代码解决了我的问题。

public function render($request, Exception $exception)
{
    if ($exception instanceof Illuminate\Session\TokenMismatchException) {
        Artisan::call('cache:clear');
        Artisan::call('config:cache');
        return Redirect::back();
    }
    return parent::render($request, $exception);
}

答案 25 :(得分:0)

在我的情况下,另一个管理员用户通过我的管理控制台登录,并且无法使用新的laravel / ui身份验证登录并触发419。

解决方案

使用隐身标签页打开一个新标签页,然后再次进行测试。

答案 26 :(得分:0)

我尝试了此处提供的所有答案。但是他们都没有在共享主机上为我工作。然而,这里提到的灵魂对我有效How to solve "CSRF Token Mismatch" in Laravel l

答案 27 :(得分:0)

就我而言,在打开嵌入在模态视图中的表单之前,我使用 javascript 清除了所有输入。愚蠢的是,我没有注意到它擦除了 hidden 输入的值,其中包括 csrf 标记。尽管我对 name='_token' 输入的条件有一个例外。当然,我的代码是 splitting 带有下划线的输入名称到数组中。
必须为 hidden 输入设置例外。

答案 28 :(得分:0)

如果您添加了@csrf,那么也会出现错误,请确保您没有阻止 cookie...

点击 Cookies 并允许链接!

答案 29 :(得分:0)

2021 年,我在应用上述所有解决方案时遇到了这个错误,我的每条路由都抛出了 419。我的应用程序在 localhost 上运行良好,但在服务器上运行时为 419。 然后我在修复生产环境中的 .env 文件、.env 中的 remove sanctum variables 并在 config/session.php 中设置 'secure' => env('SESSION_SECURE_COOKIE', null) 时得到了解决方案

答案 30 :(得分:0)

这是我见过几次的问题,通常是在使用 apache 时。

如果在执行的任何文件中的开头 <?php 之前有任何杂散字符或换行符,那么在准备和发送 cookie 之前,Web 服务器会发出这些字符。

这会阻止 cookie 发送到客户端,并且客户端必须在每次请求时启动一个新会话。

不幸的是,唯一的解决方案是查看您创建或修改的每个文件(如果您使用 Git 还不错)并确保 <?php 是每个 php 文件中的第一个字符。

您可以忽略视图文件,因为它们在发送 cookie 之后才会使用。

最有可能的候选对象是控制器、服务提供商和路由文件。

答案 31 :(得分:0)

实际上,SCRF是基于会话的令牌。 将您的路由添加到路由组中,并添加一个控制会话的中间件。

web是laravel中的默认中间件,它可以控制会话请求。

Route::group(array('middleware' => ['web']), function () {
  Route::post('/foo', function () {
     echo 1;
     return;
  });
});

答案 32 :(得分:0)

我只是遇到了同样的问题,这完全取决于我的愚蠢。在提交所述表单之前,我已经通过javascript禁用了所有表单字段(而不仅仅是提交按钮)!当然,这导致未提交所有表单元素(包括隐藏的_token字段),这又引发了419错误!

我希望这可以帮助几个小时的人从头开始抓挠!

Disabled form inputs do not appear in the request

答案 33 :(得分:0)

这可能是矫kill过正,但您可以尝试以下方法:

//表单调用命名路由,其中​​添加了隐藏令牌字段。

<form method="POST" action="{{ route('foo') }}" >
    @csrf
    <input type="hidden" name="_token" value="{!! csrf_token() !!}">
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

// 命名路线

Route::post('/foo', function () {
    return 'bar';
})->name('foo');

//在<head></head>块中添加:

<meta name="_token" content="{!! csrf_token() !!}" />

我确实在Laravel 5.7上使用Homestead在本地进行了测试,这是使用Laravel Installer 2.0.1全新安装的,并且可以正常工作。您的环境是什么?

理论:我想知道这是否与您的环境中使用{{ }}对比{!! !!}的刀片式渲染html标签有关,或者它是如何服务的(例如php artisan serve)。是什么让我认为line 335中的/vendor/laravel/framework/src/illuminate/Foundation/helpers.php应该呈现上面手动键入的同一行。

答案 34 :(得分:0)

我也遇到这样的问题,我发现会话文件被锁定以进行写入。因此,我不知道您是通过vagrant还是Docker之类的工具来运行Laravel,但我建议您尝试更改会话目录(当然还有文件)的权限(在VM中运行Laravel时,您应该更改本地和VM中的权限(例如,通过NFS共享文件时)

赞:

chmod -R 777 storage/framework/sessions
chmod -R 777 storage/logs

我知道,获得777许可是您所能想象的最严重的灾难。但是它们很方便进行故障排除。

为确保我从未忘记这一点,我制作了一个bash脚本。 (之所以叫lalog,只是因为我想清除日志文件并设置权限)

注意:请确保您在会话目录上使用此功能。在config / session.php中,有一个files密钥与该位置一起声明。就我而言:

<?php
//...........
'files' => storage_path('framework/sessions'),
//...........

位置:/ usr / bin / lalog(这是文件,而不是目录)
在外壳中以lalog

的身份执行
#!/bin/bash
rm -rf /home/username/Projects/x/storage/logs/laravel.log
echo "Laravel log removed"
touch /home/username/Projects/x/storage/logs/laravel.log
echo "Laravel log created"
chmod -R 777 /home/username/Projects/x/storage/
echo "CHMOD 777 on Storage dir"

警告!这将允许所有人进行写访问,因此请谨慎操作! 另外,Laravel的日志文件中可能包含一些有用的信息。 (确保在运行我的bash脚本之前先查看该日志文件)

此外,我知道已经提到过。但是,请务必确保您始终

  1. 允许浏览器中的cookie,因此可以在cookie中设置令牌
  2. 检查刀片文件中是否使用了@csrf

表格应该是这样的

<form method="POST" action="{{ route('login') }}">
@csrf
.......
</form>

答案 35 :(得分:0)

您不能在Laravel 5.6或更高版本上做空回报。 Laravel始终期望返回一个值。 (我从过去的经验中知道)。 这主要与PHP 7如何处理空收益有关。

答案 36 :(得分:0)

您错误地添加了CSRF字段。代替@csrf,您应该像这样使用csrf_field()

<form method="POST" action="/foo" >
    {{ csrf_field() }}
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

答案 37 :(得分:0)

代码中没有问题。我已经检查了与您在新安装中编写的代码相同的代码。

表单代码:

<form method="POST" action="/foo" >
    @csrf
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

web.php文件代码:

Route::get('/', function () {
    return view('welcome');
});

Route::post('/foo', function () {
    echo 1;
    return;
});

提交表单后的结果是: Output after submitting the form

如果您清除浏览器缓存或尝试使用其他浏览器,我认为它将解决。

答案 38 :(得分:0)

一种快速的错误方法是转到app \ http \ middleware \ verifycsrftoken.php并将路由添加到$ except列表中。发帖请求将对CSRF令牌验证无效。

protected $except = [
    //
    'doLogin.aspx',
    'create_coupon',
];

答案 39 :(得分:0)

在我的开发环境中,我遇到了同样的问题。使用http://127.0.0.1:8000而不是http://localhost:8000来解决。

答案 40 :(得分:0)

只是把它放在那里,我有同样的问题。在我的本地宅基地上,它可以按预期工作,但是将其推送到开发服务器后,我也收到了会话超时消息。弄清它的环境问题后,我从apache变成了nginx,这奇迹般地使问题消失了。

答案 41 :(得分:0)

我很久以前就遇到了这个问题。我记得它引起了storage/framework/sessions的许可。您可能需要通过chmod -R 0777 storage/framework/sessions命令进行更改。它对我有用。

答案 42 :(得分:0)

经过很多时间,我才用这种方式解决了

我的laravel安装路径与配置文件session.php中设置的路径不同

'domain' => env('SESSION_DOMAIN', 'example.com'),

答案 43 :(得分:0)

就我而言,这非常荒谬。将.gateway()放在路由文件的顶部时,出现错误419。

Collection

然后我将Auth::routes()移到了路由文件的底部,从而解决了该错误。

Auth::routes();

Route::middleware('auth')->group(function () {
    Route::get('/', 'DashboardController@index')->name('dashboard');
});

也许它也可以为您提供帮助。祝你好运。

答案 44 :(得分:0)

我只想说,确保生成了csrf令牌,有时它只是一个空数组,例如如果您不在js查询中生成,则以转发器形式进行。

答案 45 :(得分:0)

如果您已有 csrf 指令,则可能已更改了会话的运行方式。

config/session.php中,选中“安全” 字段。如果您的服务器上没有https,则应该为false。

您也可以将SESSION_SECURE_COOKIE=FALSE放在.env文件(根目录)上。

答案 46 :(得分:-1)

我遇到了类似的问题,并且找到了解决方案

如果您在回显时回显或从控制器打印某些内容,则会弹出此问题。

因此请确保在控制器返回时不使用echo或print

答案 47 :(得分:-1)

只需更改.env SESSION_DRIVER = cookie

答案 48 :(得分:-4)

<form method="POST" action="{{ url('foo') }}" >

or 
composer update or composer install

or 
in your Http/Kernel.php comment this line (not recommended)
// \App\Http\Middleware\VerifyCsrfToken::class,