当前位置: 首页 > news >正文

【Easylive】服务端操作 Cookie 的完整流程(结合案例解析)

【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版

以下通过 saveToken2Cookie 方法 说明服务端如何通过 HttpServletResponse 操作 Cookie,并附上完整案例和关键点解析。


1. 代码逐行解析

protected void saveToken2Cookie(HttpServletResponse response, String token) {
    // 1. 创建一个新的 Cookie 对象
    Cookie cookie = new Cookie(Constants.TOKEN_WEB, token);
    
    // 2. 设置 Cookie 过期时间(7天)
    cookie.setMaxAge(Constants.TIME_SECONDS_DAY * 7);
    
    // 3. 设置 Cookie 的生效路径(根路径,全站有效)
    cookie.setPath("/");
    
    // 4. 将 Cookie 添加到响应中(通过 Set-Cookie 头发给浏览器)
    response.addCookie(cookie);
}

2. 关键操作说明

操作作用对应 HTTP 协议行为
new Cookie(name, value)创建 Cookie无(仅内存对象)
setMaxAge(seconds)设置 Cookie 有效期响应头 Set-Cookie: token=abc; Max-Age=604800
setPath("/")设置 Cookie 的作用路径响应头 Set-Cookie: token=abc; Path=/
response.addCookie()将 Cookie 写入响应浏览器收到后自动保存

3. 完整案例场景

场景描述

需求:用户登录成功后,服务端生成一个身份令牌(Token),并通过 Cookie 自动保存到浏览器。
技术实现:调用 saveToken2Cookie 方法。

代码示例(Spring MVC Controller)

@PostMapping("/login")
public String login(
    @RequestParam String username, 
    @RequestParam String password,
    HttpServletResponse response
) {
    // 1. 验证用户名密码(伪代码)
    boolean isValid = userService.checkLogin(username, password);
    if (!isValid) {
        return "登录失败";
    }

    // 2. 生成 Token(伪代码)
    String token = jwtUtil.generateToken(username);

    // 3. 将 Token 保存到 Cookie(关键操作!)
    saveToken2Cookie(response, token);

    return "登录成功";
}

// 复用之前的 Cookie 操作方法
protected void saveToken2Cookie(HttpServletResponse response, String token) {
    Cookie cookie = new Cookie("AUTH_TOKEN", token);
    cookie.setMaxAge(7 * 24 * 60 * 60); // 7天有效期
    cookie.setPath("/"); // 全站有效
    cookie.setHttpOnly(true); // 防止 XSS 攻击(可选)
    response.addCookie(cookie);
}

4. 浏览器与服务器的交互流程

  1. 请求登录

    POST /login HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    username=admin&password=123456
    
  2. 服务端响应(设置 Cookie):

    HTTP/1.1 200 OK
    Set-Cookie: AUTH_TOKEN=xyz123; Max-Age=604800; Path=/; HttpOnly
    Content-Type: text/html
    
    登录成功
    
  3. 后续请求(浏览器自动携带 Cookie):

    GET /profile HTTP/1.1
    Cookie: AUTH_TOKEN=xyz123
    

5. 关键注意事项

(1) Cookie 安全性

配置作用推荐值
setHttpOnly(true)禁止 JavaScript 读取 Cookie(防 XSS)必须启用
setSecure(true)仅通过 HTTPS 传输(防窃听)生产环境启用
setDomain("example.com")限制 Cookie 的作用域名按需设置

(2) 其他常见操作

删除 Cookie

Cookie cookie = new Cookie("AUTH_TOKEN", null);
cookie.setMaxAge(0); // 立即过期
response.addCookie(cookie);

读取客户端 Cookie

Cookie[] cookies = request.getCookies(); // 从 HttpServletRequest 获取

6. 总结

服务端操作 Cookie 的核心步骤

1. 创建 `Cookie` 对象 → 2. 设置属性 → 3. 通过 `response.addCookie()` 下发。
   • **实际应用场景**:  

用户认证(Token)、会话管理、个性化设置等。

安全建议
始终启用 HttpOnlySecure(HTTPS 环境下)。

通过这种方式,服务端可以轻松管理浏览器端的持久化数据! 🚀

相关文章:

  • APIPost接口测试完整流程指南
  • java学习笔记11——泛型
  • 【Unity】 HTFramework框架(六十四)SaveDataRuntime运行时保存组件参数、预制体
  • Python WebSockets 库详解:从基础到实战
  • MySQL 5.7 Online DDL 技术深度解析
  • C++和C#接口对应关系
  • 【运维】Centos硬盘满导致开机时处于加载状态无法开机解决办法
  • Docker基础详解
  • Linux 高级路由策略控制配置:两个不同路由子网间通信
  • 沉浸式体验测评|AI Ville:我在Web3小镇“生活”了一周
  • 基于MODIS观测的全球格点数据处理与GeoTIFF栅格化存储
  • 新闻发布管理系统带万字文档新闻管理系统java项目java课程设计java毕业设计
  • ES5内容之String接口
  • python-leetcode 62.搜索插入位置
  • 阻止上传可执行程序
  • 实现Excel导入和导出
  • 服务器自动备份到本地,服务器自动备份到本地的方法有哪些?
  • [250401] OpenAI 向免费用户开放 GPT-4o 图像生成功能 | Neovim 0.11 新特性解读
  • MySQL和Oracle批量插入SQL差异详解
  • 青少年编程与数学 02-014 高中数学知识点 06课题、数学建模与探究活动
  • 道指跌逾100点,特斯拉涨近5%
  • 经济日报刊文:品牌经营不能让情怀唱“独角戏”
  • 中非民间对话在赞比亚举行
  • 2025中国南昌国际龙舟赛5月23日启幕,是历年来南昌举办的最高规格龙舟赛事
  • 越怕出错越会出错,“墨菲定律”的魔咒该怎么破?
  • A股三大股指低收:银行股再度走强,两市成交11920亿元