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
相关产品推荐
相关产品推荐

