Laravel通过withCookie()设置加密Cookie,如return response()->withCookie(cookie('name', 'John Doe', 60));使用$request->cookie('name')读取;删除则用withCookie(cookie()->forget('name')),确保路径一致,操作安全简便。

在 Laravel 中操作 Cookie 非常简单,框架提供了便捷的辅助函数和响应实例方法来设置、读取和删除 Cookie。下面详细介绍这些常用操作。
设置 Cookie
在响应中添加 Cookie,可以使用 withCookie() 方法。Laravel 使用加密签名的 Cookie,默认情况下客户端无法修改或伪造。
示例:在控制器中设置一个 Cookie
return response('Hello')->withCookie(cookie('name', 'John Doe', 60));
说明:
- cookie('name', 'value', $minutes) 创建一个持续 60 分钟的 Cookie
- 第三个参数是有效期(分钟),默认为永久会话级别(关闭浏览器失效)
- 该 Cookie 会被自动加密,前端不可见明文
如果需要设置更复杂的选项,比如作用路径、域名、是否仅 HTTPS 等,可以使用 cookie::make() 或链式调用:
$cookie = cookie()->forever()->path('/')->secure(true)->make('theme', 'dark');
return response('Dark mode enabled')->withCookie($cookie);
读取 Cookie
通过请求实例可以轻松读取客户端发送的 Cookie,使用 Cookie::get() 或从 $request 对象获取。
use Illuminate\Http\Request;
public function show(Request $request)
{
$name = $request->cookie('name');
// 或使用辅助函数
$name = cookie('name'); // 注意:此方式获取的是已存在的输入 Cookie,不是写入中的
}
注意: 推荐使用 $request->cookie('key') 方式读取用户发来的 Cookie 值。
删除 Cookie
删除 Cookie 实际上是设置一个过期时间为过去的 Cookie,让浏览器自动清除它。
return response('Cookie deleted')->withCookie(cookie()->forget('name'));
也可以手动指定一个已过期的 Cookie:
return response()->withCookie(cookie('name', '', -1));
关键点:
- 使用 forget() 方法最安全可靠
- 确保删除时的路径(path)与设置时一致,否则可能无法正确清除
基本上就这些。Laravel 的 Cookie 操作简洁且安全,默认开启加密保护,适合大多数 Web 应用场景。










