Laravel中使用Basic Auth时如何禁用Cookie?
完全可以禁用这两个Cookie,核心思路是让你的API路由避开Laravel默认的会话(Session)和CSRF保护中间件,具体可按以下几种方式实现:
1. 将API路由放到routes/api.php(推荐)
Laravel的api中间件组默认不包含StartSession和VerifyCsrfToken中间件,天然不会生成laravel_session和XSRF_TOKEN Cookie。只需把你的API路由定义在routes/api.php中,同时添加auth.basic中间件做认证:
// routes/api.php Route::middleware('auth.basic')->group(function () { // 定义你的API接口,比如: Route::get('/device/data', [DeviceController::class, 'getData']); });
2. 若必须使用web中间件组,手动排除指定中间件
如果业务需求要求API路由使用web中间件组(比如依赖web组的其他中间件),可以在路由分组时排除会话和CSRF中间件:
// routes/web.php Route::middleware(['web', 'auth.basic']) ->withoutMiddleware(['StartSession', 'VerifyCsrfToken']) ->group(function () { // 你的API路由 });
3. 自定义专用的中间件组
在app/Http/Kernel.php中创建一个只包含Basic Auth和必要中间件的分组,彻底隔离会话与CSRF相关逻辑:
// app/Http/Kernel.php protected $middlewareGroups = [ // 保留原有的web、api组 'api-basic' => [ 'auth.basic', 'throttle:api', // 可选,用于限流保护API \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ];
然后在路由中使用这个自定义组:
// 可放在routes/api.php或web.php中 Route::middleware('api-basic')->group(function () { // 你的API路由 });
验证效果
完成配置后,调用API时查看响应头,确认没有Set-Cookie字段返回laravel_session和XSRF_TOKEN,即可实现减少流量消耗的目标。
内容的提问来源于stack exchange,提问作者d4ta
相关产品推荐
相关产品推荐

