我是对的,我只需要在/app/Http/Middleware/VerifyCsrfToken.php中将api / *路径添加到异常
<?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 = [
//
'api/*',
];
}
答案 0 :(得分:1)
您应将api.php
文件用于api路由,因为app/http/kernel.php
中默认情况下不会检查csrf_token中间件:
protected $middlewareGroups = [
'web' => [
...
\App\Http\Middleware\VerifyCsrfToken::class,
...
],
'api' => [
'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
答案 1 :(得分:1)
错误是,您已经在routes/web.php
上定义了api路由,如果您想在根域中使用/api
,则在routes/api.php
上创建API路由。
routes / api.php :
Route::get('/test', function () {
return 'Hello World';
});
现在您可以通过http://127.0.0.1:8000/api/test
web.php
文件包含 RouteServiceProvider 放置在Web中间件组中的路由,该路由提供会话状态,CSRF
保护和cookie加密。如果您的应用程序不提供无状态的RESTful API,则很可能在web.php
文件中定义了所有路由。
api.php
文件包含 RouteServiceProvider 放在api
中间件组中的路由,该中间件组提供了速率限制。这些路由旨在实现无状态,因此通过这些路由进入应用程序的请求旨在通过令牌进行身份验证,并且将无法访问会话状态。
请参阅官方文档 here