我正在尝试通过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 的价值
可能是因为您没有发送带有表单数据的csrf令牌。
在laravel中,必须在每个请求上发送csrf令牌。
如果您不想发送,请在app/http/middleware/verifycsrftokem.php文件中提及您的方法名称。
您需要在发送的请求中提供 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)
我遇到了同样的问题,我发现的唯一解决方案是从 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:这是针对开发环境的,我想您最终将不得不撤消此操作,因此,如果我错了,请有人纠正我。
| 归档时间: |
|
| 查看次数: |
3597 次 |
| 最近记录: |