我正在尝试通过POSTMAN应用程序向运行Laravel 5.6的API发送POST请求。
我的路线如下:
Route::post('/charge','Charge@index');
和Charge and index函数只是var_dumps post参数:
class Charge extends Controller
{
public function index()
{
var_dump($_POST);
}
}
我得到的响应是419个未知状态错误。我不知道问题是什么。
我不确定此处还包含哪些其他信息,但是请问是否需要其他任何帮助来解决此问题。
谢谢, J
答案 0 :(得分:5)
可能是因为您没有发送带有表单数据的csrf令牌。
在laravel中,必须在每次请求时发送csrf令牌。
如果您不想发送,请在app/http/middleware/verifycsrftokem.php
文件中提及您的方法名称。
答案 1 :(得分:0)
我从POSTMAN发出了获取请求,并且遇到419错误。但是,如果您仍然想知道如何找到csrf
令牌,即使您正在发出 GET 请求并面临状态 419 。就我而言,我通过在标头中添加 user-agent: xxxx
令牌来解决了这个问题。
示例:
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
答案 2 :(得分:0)
如果在标题上使用邮递员,请添加
(KEY)(VALUE)
X-CSRF-TOKEN ” yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE
您可以通过添加找到VALUE
public function index()
{
return csrf_token();
}
并在您的路线名称上发送GET,那么您将获得VALUE的csrf
答案 3 :(得分:0)
你需要在你发送的请求中提供 CSRF 令牌,在这种情况下你需要一个 CSRF 令牌。
<块引用>在 web.php 上生成 CSRF 令牌
Route::get('/token', function () {
return csrf_token();
});
<块引用>
使用令牌发送请求 | 将以下内容放在标题上 |每个请求都应该更改令牌
(KEY) (VALUE)
X-CSRF-TOKEN MGpzhSLdVWdB7ddQSR8B6iu3A89A6LW7UPT0zmO2
答案 4 :(得分:0)
我遇到了同样的问题,我找到的唯一解决方案是从 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.
];
}
之后我就可以完成邮递员的发帖请求了。
PD:这是针对开发环境我想您最终将不得不撤消此操作,因此,如果我错了,有人会纠正我。