You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:25:23