Laravel API为什么在POST和PUT方法上返回419状态代码?
我正在尝试通过使用Laravel创建RESTful API。我已经使用 创建了我的控制器,这是我的控制器代码:
<?phpnamespace 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属性中来排除路由:
<?phpnamespace 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