Laravel API为什么在POST和PUT方法上返回419状态代码?

我正在尝试通过使用Laravel创建RESTful API。我已经使用 创建了我的控制器,这是我的控制器代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class RestController extends Controller

{

private $arr = array(

array("name"=>"jon", "family"=>"doe"),

array("name"=>"jhon", "family" => "doue")

);

public function index(){

return json_encode($this->arr);

}

public function store(Request $request){

return "oops!!";

}

public function update (Request $request, $id){

return "test";

}

}

我在我的routes / web.php文件中添加了以下代码行来创建此路由:

Route::resource('person', 'RestController');

当我尝试在GET / person上测试此api时,它可以正常工作,但在POST和PUT上,我从Laravel获得419状态代码。

回答:

如果您正在开发Rest

api,最好不要添加令牌。如果您使用的是5.4或5.5,则可以使用api.php而不是web.php。在api.php中,不需要在发布请求时进行令牌验证。

如果您使用的是web.php,则您可以放弃令牌。这是官方文档

有时您可能希望从CSRF保护中排除一组URI。例如,如果您正在使用Stripe处理付款并使用其Webhook系统,则您将需要从CSRF保护中排除您的Stripe

Webhook处理程序路由,因为Stripe不知道要发送到您的路由的CSRF令牌。

通常,应将这些类型的路由放置在RouteServiceProvider应用于route /

web.php文件中的所有路由的Web中间件组之外。但是,您也可以通过将路由的URI添加到VerifyCsrfToken中间件的$

except属性中来排除路由:

<?php

namespace App\Http\Middleware;

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

class VerifyCsrfToken extends BaseVerifier

{

/**

* The URIs that should be excluded from CSRF verification.

*

* @var array

*/

protected $except = [

'stripe/*',

];

}

以供参考

https://laravel.com/docs/5.5/csrf

以上是 Laravel API为什么在POST和PUT方法上返回419状态代码? 的全部内容, 来源链接: utcz.com/qa/427603.html

回到顶部