【计算机网络】Cookie与Session的区别

news/2024/5/18 12:26:42 标签: Cookie, Session

                                    CookieSession的区别

CookieSession是网络上进行会话保持或身份跟踪的两种机制,理解这两种方式的区别对我们提高网站运行的效率与安全十分重要。

网站利用这两种技术,来知道我们的登录保持状态。比如说,当jack第一次登录网站时,发送信息给服务器,服务器会在内存中开辟出来一块区域用来存放标识jack的Session,并将此Seesion以JSESSIONID=jack的方式传回给浏览器,浏览器需要将此数据保存在本地,使用键值对(key:JSESSIONID,value:jack)的方式进行存储,这种方式就是Cookie。当jack再次点击网站上的内容时,浏览器将此Cookie传给服务器,服务器才能知道此次操作是jack的行为,故不需要让jack进行再次登录。


一、Cookie

(1)Cookie的数据保存在客户端。

(2)Cookie中只能存放少量的数据,数据大小和数量方面都有限制。

(3)Cookie机制不是很安全,我们可以分析存放在本地的Cookie从而进行Cookie欺骗。因此,Cookie中最好不存放一些敏感的信息。

(4)Cookie的过期时间:如果不设置Cookie的过期时间,则将当前Cookie称为会话Cookie,表示这个Cookie的生命期为浏览器的会话期间,关闭浏览器窗口,Cookie就消失了,会话Cookie一般保存在内存里。设置了过期时间,则将当前Cookie称为持久Cookie,浏览器会把Cookie保存在硬盘上,存储在硬盘上的Cookie会在不同的浏览器进程间共享。

(5)应用场景:

【1】判断注册用户是否已经登录网站:用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录流程。

【2】根据用户的爱好定制内容:网站创建包含用户浏览内容的cookies,在用户下次访问时,网站根据用户的情况对显示的内容进行调整,将用户感兴趣的内容放在前列。

【3】实现永久登录:如果用户是在自己家的电脑上上网,登录时就可以记住他的登录信息,下次访问时不需要再次登录,直接访问即可。

【4】实现自动登录:当用户注册网站后,就会收到一个惟一用户ID的cookie。用户再次连接时,这个用户ID会自动返回,服务器对它进行检查,确定它是否是注册用户且选择了自动登录,从而使用户无需给出明确的用户名和密码,就可以访问服务器上的资源。

【5】使用cookie记录各个用户的访问计数:获取cookie数组中专门用于统计用户访问次数的cookie的值,将值加1并将最新cookie输出。

【6】使用cookie记住用户名与用户密码。用户勾选了“自动登录”,就把用户名和密码的信息放到cookie中。同时可设置有效期。

【7】用cookie实现新手大礼包等弹窗功能。同理,将新手大礼包弹窗逻辑写入到cookie中,并设置相应的有效期。比如在有效期内只弹出一次该弹窗,超过有效期登录后再次弹出弹窗。


二、Session

(1)Session的数据保存在服务器端,准确的来说是保存在服务器端的内存中,当服务器重启后,Session就会消失。

(2)Session没有大小的限制,Session保存的数据由服务器的内存决定,内存越大,保存的Session就越多。

(3)但我们过量的使用Session时,会占据大量内存,大大降低服务器的性能。为了防止Session过多造成的内存溢出,我们会对Session设置超时时间,如果在这个时间内,用户没有继续访问过网站,服务器就会在内存中将这个Session剔除掉。

(4)应用场景:

【1】通过session累计用户数据。例如,一个未登录用户访问了京东网站,这个时候京东对其下发了一个 cookie,假设cookie的名字叫做abc,那这条记录就是 abc=001,同时京东的后台也生成了一个 session id, 它的值也为 001, 001 这个客户在 2 点、 3 点、 4 点分别添加了三件商品到购物车,这样后台也记录了 session id 为 001的用户的购物车里面已经有三件商品,并且只要每次客户端 cookie 带上来的值里面包含session id,后台都能够展示相应的数据,如果这个时候,在浏览器里面清空 cookie,cookie 数据消失之后,后台和客户端无法建立对应关系,购物车的数据就会失效了。

【2】通过session实现单点登录。一个用户帐号成功登录后,在该次session还未失效之前,不能在其他机器上登录同一个帐号。登录后将用户信息保存到session中,如果此时在另外一台机器上一个相同的帐号请求登录,通过遍历(遍历的意思就是将所有session都查看一遍)Web服务器中所有session并判断其中是否包含同样的用户信息,如果有,在另一台机器上是不能登录该帐号的。


三、禁用Cookie怎么办

当用户决定禁用Cookie,而我们除了强制让用户开启Cookie外,还有什么其他方法来让我们进行会话保持呢。

(1)URL地址重写

直接把JSESSION=ID附在请求链接的后面,而不是存放在HTTP的请求头中。

(2)表单隐藏字段

服务器根据登录名自动修改表单中某个隐藏字段的值,也就是不同的人请求相同的网页,返回的网页都不是相同的。例如:

<form name="form1" action="....">
    <input type="hidden" name="jsessionid" value="ASJKL12IDOBOPOA091">
    <input type="submit" value="提交">
</form>

两中方式的本质其实是一样的,不从请求头中的Cookie字段获取,而是从请求内容中获取。


好了,以上就是我对CookieSession的总结,大家也应该都明白了吧。


http://www.niftyadmin.cn/n/1705691.html

相关文章

android – 检查whatsapp号码开通

我被要求创建一个移动应用程序,用于检查所选whatsapp联系人的在线状态,并在所选联系人在线时通知用户.我认为这是可能的,因为它已经存在另一个使用相同信息的应用程序,它至少对某人起作用&#xff1a; https://play.google.com/store/apps/details?idcom 但是我不知道为了获…

【JAVA】List( ? extends T )与List( ? super T)的区别

List<? extends T>与List<? super T>的区别 ps&#xff1a;标题中的圆括号应该为尖括号&#xff0c;否则&#xff0c;标题非法&#xff0c;发表不出去。 一、前置名词解释 &#xff08;1&#xff09;&#xff1f; &#xff1f;表示类型通配符&#xff0c;即具…

WhatsAPP通讯协议端对端加密人工智能

本文是一个以 whatsapp 为案例的&#xff0c;针对端对端聊天加密通讯协议整理的一个学习笔记&#xff0c;仅供大家学习。Signal protocol 是真正的端到端的通讯加密协议&#xff0c;号称是世界上最安全的通讯协议&#xff0c;任何第三方包括服务器都无法查看通讯内容。全篇都是…

【leetcode.21】合并两个有序链表

合并两个有序链表 一、要求 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 输入&#xff1a;1->2->4, 1->3->4 输出&#xff1a;1->1->2->3->4->4 二、解法 &#xff08;…

whatsapp群发,whatsapp协议,whatsapp群控这些有着哪些关联?

whatsapp群发软件一款功能强大的可以从PC发送批量的Whatsapp消息的辅助软件。它非常适合营销。它使用强大的Whatsapp Web技术&#xff0c;您可以使用软件同时向多个用户发送Whatsapp消息。快速有效地将您的所有朋友&#xff0c;亲戚或潜在客户与专业级别的Whatsapp营销联系起来…

whatsapp协议群发是如何发挥最大功效

WhatsApp讲解 WhatsApp可以给陌生人发送消息&#xff0c;对方是WhatsApp用户&#xff0c;你可以发给他。 可以给任何人发送信息&#xff0c;你知道他的手机号5577850即可。 我们在whatsapp上做营销的时候有一个比较麻烦的地方就是发消息&#xff0c;因为那么多的好友肯定不能够…

【leetcode.5】最长回文子串

最长回文子串 一、要求 给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。 示例 1&#xff1a; 输入: "babad" 输出: "bab" 注意: "aba"也是一个有效答案。示例 2&#xff1a; 输入: "cbbd"…

【leetcode.206】反转链表

反转链表 一、要求 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题&#xff1f; 链表结点定义为&#xff1a; public class ListNode {int …