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

Laravel 9创建Cookie后无法获取值的问题求助

问题核心分析

你创建的Cookie名称是codigo,但在EncryptCookies.php里添加到$except数组的是code_id,两者完全不匹配;另外,若创建Cookie后未将其附加到响应中,前端根本不会存储该Cookie,这也是常见的遗漏点。

正确的Cookie创建与获取步骤

1. 正确创建并返回Cookie

在路由中创建Cookie后,必须将其附加到响应里,Laravel不会自动完成这一步:

// web.php
use Illuminate\Support\Facades\Cookie;
use Illuminate\Http\Response;

Route::get('/set-cookie', function () {
    // 创建有效期60分钟的Cookie
    $cookie = Cookie::make('codigo', 1, 60);
    // 返回响应并绑定Cookie
    return response('Cookie已设置')->cookie($cookie);
});

2. 正确获取Cookie值

在/retornar路由中,要对应Cookie名称codigo来获取,而非错误的code_id:

// web.php
Route::get('/retornar', function () {
    // 方法1:通过请求实例获取
    $codigo = request()->cookie('codigo');
    // 方法2:通过Cookie门面获取
    $codigo = Cookie::get('codigo');
    
    dd($codigo); // 此时应正常输出1
});

3. 修正EncryptCookies配置(按需操作)

如果不需要加密codigo这个Cookie,需修改app/Http/Middleware/EncryptCookies.php的$except数组,添加正确的Cookie名称:

protected $except = [
    'codigo', // 替换成你实际使用的Cookie名称
];

额外排查点

  • 检查浏览器是否禁用Cookie,或开启隐私模式导致Cookie无法存储
  • 确认路由都在web中间件组下(默认web.php内路由已包含),因为Cookie相关中间件属于该组
  • 可通过浏览器开发者工具的「Application」标签,查看Cookies列表,确认codigo是否存在

内容的提问来源于stack exchange,提问作者Léo Rauber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:35:18