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

我试图通过使用laravel创建Restful api并使用php artisan make:controller RestController创建我的控制器,这是我的控制器代码:

<?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它工作正常但是在帖子上并且把我从laravel获得419状态代码.

最佳答案
如果你正在开发rest apis,最好不要添加令牌.如果你使用的是5.4或5.5,你可以使用api.php而不是web.php.在api.php你不需要对帖子请求进行令牌验证.

如果您使用的是web.php,那么您就会激活令牌.这是官方文档

从CSRF保护中排除URI

有时您可能希望从CSRF保护中排除一组URI.例如,如果您使用Stripe处理付款并使用其webhook系统,则需要从CSRF保护中排除Stripe webhook处理程序路由,因为Stripe将不知道要向您的路由发送什么CSRF令牌.

通常,您应将这些类型的路由放在RouteServiceProvider应用于routes / 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

转载注明原文:php – 为什么Laravel Api在POST和PUT方法上返回419状态代码? - 代码日志