Cookie和Session

本文详细介绍了Web会话跟踪技术,包括Cookie和Session的基本概念、工作原理、应用场景及优缺点。Cookie是存储在客户端,用于记录用户状态,如登录信息,而Session将用户数据存储在服务器端,保证数据安全。讨论了Cookie的设置细节,如有效期和路径,以及Session如何在不同页面间共享用户数据。两者的主要区别在于数据存储位置,Cookie在客户端,Session在服务器端。此外,还阐述了它们之间的联系,即Session依赖Cookie来保持用户会话的连续性。

1.会话跟踪技术

web程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。
早期为了记录用户的状态时,就在浏览器记录用户信息cookie机制,每次请求都会往服务器发送这些数据,这样服务器就知道是谁在请求了,该对应返回什么样的数据,但是久而久之,安全性就暴露出来了。
cookie是在本地的,在本地就会有人想着去修改cookie里面的数据,从而获取别人的信息。于是就有新的处理办法,改在服务器端记录用户信息。也就出现了session机制,一切用户的身份由服务器掌控。这就是cookie机制和session机制的历史。

在一个会话的多个请求中共享数据,这就是会话跟踪技术。例如在一个会话中的请求如下:

请求银行主页;
请求登录(请求参数是用户名和密码);
请求转账(请求参数与转账相关的数据);
请求信誉卡还款(请求参数与还款相关的数据)。

在这上会话中当前用户信息必须在这个会话中共享的,因为登录的是张三,
那么在转账和还款时一定是相对张三的转账和还款!这就说明我们必须在一个会话过程中有共享数据的能力。

2.保存会话的两种技术

客户端技术 Cookie
两个经典应用场合:判定注册用户是否已经登录网站,购物车。
服务端技术 Session
经典应用场合一般就是在Session中存储了用户的登录信息,进而可以访问一些需要权限才能访问的页面。

3.Cookie介绍

Cookie是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当下一次再访问服务器时把Cookie再发送给服务器。
Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。客户端会保存Cookie,并会标注出Cookie的来源(哪个服务器的Cookie)。当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器,这样服务器就可以识别客户端了!

1.Cookie应用场景

记录上次访问时间    
记录用户名
显示浏览记录

2.Cookie原理分析

在这里插入图片描述

当浏览器进行网络请求时,如果携带当前浏览器的cookie
服务器打给浏览器set-cookie:username=zhangsan;Exipres=Moday,具体时间
浏览器打给服务器
Cookie:username=zhangsan;
存储到浏览器的文本中
username=zhangsan  169.254.xxx.xxx/day09_cookie/servlet	name   value    url

3.Cookie 使用细节

一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
void setPath :设置cookie的有效访问路径。有效路径指的是cookie的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着cookie信息,否则不带cookie信息。
void setMaxAge(int expiry) : 设置cookie的有效时间。
正整数:表示cookie数据保存浏览器的缓存目录(硬盘中),数值表示保存的时间。
负整数:表示cookie数据保存浏览器的内存中。浏览器关闭cookie就丢失了!!
:表示删除同名的cookie数据
Cookie数据类型只能保存非中文字符串类型的。可以保存多个cookie,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

4.Session介绍

在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。

5.Session和Cookie的主要区别在于:

Cookie是把数据保存在浏览器端的内存中
Session把数据保存在服务器端的内存中

6.cookie与session的联系:

当服务器端生成一个session时就会向客户端发送一个cookie保存在客户端,这个cookie保存的是session的sessionId。。这样才能保证客户端发起请求后客户端已经登录的用户能够与服务器端成千上万的session中准确匹配到已经保存了该用户信息的session,同时也能够确保不同页面之间传值时的正确匹配。

### 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 ?> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值