Laravel 5-Web和API路由冲突

时间:2020-02-14 05:36:55

标签: api laravel-5

在我的Laravel网站之一中,调用登录API时遇到错误419。在我的搜索网络路线下方:

Route::get('/{address_1}/{address_2?}/{address_3?}/{address_4?}');
Route::post('/{address_1}/{address_2?}/{address_3?}/{address_4?}');

并在API路由下方:

Route::post('login', 'Auth\PassportController@login');
Route::post('register', 'Auth\PassportController@register');

1 个答案:

答案 0 :(得分:0)

在Laravel中,一个419 HTTP错误代码通常表示您缺少CSRF令牌。

如果“ API”路由:

Route::post('login', 'Auth\PassportController@login'); 
Route::post('register', 'Auth\PassportController@register');

位于web.php文件中,则可能是因为RouteServiceProvider将路由包裹在web.php中间件中的web文件中,该中间件已启用CSRF中间件。 / p>

在这种情况下,您将需要在POST请求中包括CSRF令牌,将这些路由移动到api.php路由文件,或将register端点添加到{{1 }} $excludes中间件的数组。

更新 实际上,您的搜索路线会引起很多麻烦。 考虑到它们可以将任何 URL与一到四个段匹配,因此您的API路由将被这些吞噬。 您需要做的是更改RouteServiceProvider以最后注册网络路由,然后将搜索路由置于最后。 这样,您的预定义路径将在“全部捕获”搜索路径之前被注册。