通过POSTMAN进行POST请求时出现Laravel 419错误

Jam*_*Lis 3 post laravel

我正在尝试通过POSTMAN应用程序向运行Laravel 5.6的API发送POST请求。

我的路线如下:

Route::post('/charge','Charge@index');
Run Code Online (Sandbox Code Playgroud)

而Charge和index函数只是var_dumps post参数:

class Charge extends Controller
{
    public function index()
    {
        var_dump($_POST);
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到的响应是419个未知状态错误。我不知道问题是什么。

我不确定要在此添加哪些其他信息,但是请问是否需要其他任何帮助来解决此问题。

谢谢,J

Inf*_*ter 14

如果在标题上使用邮递员添加

(KEY) (VALUE)
X-CSRF-TOKEN   yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE

您可以通过添加找到 VALUE

public function index()
{
    return csrf_token(); 
}
Run Code Online (Sandbox Code Playgroud)

并在您的路线名称上发送 GET 然后您将获得 csrf 的价值


Gur*_*ngh 8

可能是因为您没有发送带有表单数据的csrf令牌。

在laravel中,必须在每个请求上发送csrf令牌。

如果您不想发送,请在app/http/middleware/verifycsrftokem.php文件中提及您的方法名称。


Moh*_*aza 8

您需要在发送的请求中提供 CSRF 令牌,在这种情况下您需要 CSRF 令牌。

在 web.php 上生成 CSRF 令牌

    Route::get('/token', function () {
        return csrf_token(); 
    });
Run Code Online (Sandbox Code Playgroud)

使用令牌发送请求 | PUT FOLLOWING ON HEADERS |令牌应在每个请求上更改

(KEY)           (VALUE)
X-CSRF-TOKEN    MGpzhSLdVWdB7ddQSR8B6iu3A89A6LW7UPT0zmO2
Run Code Online (Sandbox Code Playgroud)


Bon*_*orm 8

我遇到了同样的问题,我发现的唯一解决方案是从 csrf 验证文件中删除该确切的 url,该文件的名称是VerifyCsrfToken.php并且位于

app\Http\Middleware\VerifyCsrfToken.php

打开该文件后,您只需将您正在执行发布请求的确切网址放入except变量中,如下所示:

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        //
        'http://localhost/api2/public/user' //This is the url that I dont want Csrf for postman.
    ];
}
Run Code Online (Sandbox Code Playgroud)

之后我就可以完成邮递员的邮寄请求。

PD:这是针对开发环境的,我想您最终将不得不撤消此操作,因此,如果我错了,请有人纠正我。