Cookie和Session

本文详细介绍了Cookie和Session在Web开发中的使用。Cookie存储在客户端,支持字符串类型数据,容量有限,但默认可跨域;Session存储在服务器端,能存储任意类型数据,容量相对较大,但关闭浏览器会话即销毁。Cookie可通过setMaxAge设置存活时间,而Session依赖服务器维持,可通过invalidate()方法销毁。理解两者差异对于优化网站性能和用户隐私保护至关重要。
sessioncookie
存储位置服务器客户端
数据类型

session.setAttribute(String,Object)

支持任意类型的数据

new Cookie(String,String)

仅支持字符串类型数据

容量上限只要JVM无限大,理论上无上限

总条数:每个域名下50条(取决于浏览器)

容量上限:4KB,中文4字节,英文2字节

Cookie生命周期:

        创建:

request.getSession();
//在服务器开辟一块全新的会话空间。构成(key:uuid   value:存储空间  过期时间:倒计时)

//在返回响应时,向客户端写入Cookie。由客户端负责存储,并在下次请求时携带到请求头发送到服务器。
Cookie cookie = new Cookie("JSESSIONID1",session.getId());
//设置cookie的项目名
cookie.setPath(request.getContextPath());
//设置cookie信息可读性
cookie.setHttpOnly(true);
response.addCookie(cookie);

        销毁:

        1、关闭浏览器时立即销毁(默认 浏览会话结束时)

                为了保障用户信息安全,关闭浏览器直接销毁。

        2、客户端清理cookie缓存内容

                尽量不要在公共网络中保存cookie,防止信息泄露

        3、配置cookie存活时间                

Cookie cookie = new Cookie("name","admin");
//设置存活时间由浏览器到期后删除,单位为秒
cookie.setMaxAge(60*60*24*7);
response.addCookie(cookie);

//浏览会话期间,关闭浏览器自动销毁
cookie.setMaxAge(-1);

//立即销毁
cookie.setMaxAge(0);

//到达指定时间后销毁
cookie.setMaxAge(>0);

        Cookie默认不支持跨域,如由 *.com   —>   *.cn

        cookie.setDomain("一级域名");允许二级域名访问一级域名

### Cookie Session 的区别及用法 #### 定义与存储位置 Cookie 是一种小型文本文件,保存在客户端浏览器中。每次请求页面时都会发送给服务器[^1]。Session 数据则保存在服务器端,在用户的会话期间保持有效。 #### 生命周期管理 Cookies 可以设置过期时间,可以是临时性的(关闭浏览器即失效),也可以是持久化的(设定具体有效期)。Sessions 通常会在一段时间不活动后自动销毁,或者通过编程方式显式结束。 #### 安全性隐私考虑 由于 Cookies 存储于用户设备上,因此存在被篡改的风险;而 Sessions 更加安全因为数据存放在服务端。然而,如果使用不当,比如传输未加密的敏感信息,则两者都可能带来安全隐患。 #### 使用场景差异 当需要记住少量非敏感的信息如偏好设置时可以选择 Cookies 。对于涉及身份验证个人资料保护的应用程序逻辑部分更适合采用 Sessions 来处理登录状态等重要事务。 #### 实现示例 ##### 设置读取 Cookie (JavaScript) ```javascript // 创建 cookie document.cookie = "username=JohnDoe; expires=Thu, 18 Dec 2023 12:00:00 UTC"; // 获取特定名称的 cookie 值 function getCookie(name) { const value = `; ${document.cookie}`; const parts = value.split(`; ${name}=`); if (parts.length === 2) return parts.pop().split(';').shift(); } console.log(getCookie('username')); // 输出 JohnDoe ``` ##### 启动并操作 Session (PHP) ```php <?php session_start(); $_SESSION["user"] = "admin"; echo $_SESSION["user"]; // 显示 admin unset($_SESSION['user']); // 删除单个变量 session_destroy(); // 销毁整个 session ?> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值