解决问题:
-
HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;
-
Session 和 Cookie 的主要目的就是为了弥补 HTTP的无状态特性。换句话说,服务器记不住你,可能你每刷新一次网页,就要重新输入一次账号密码进行登录。
Cookie:
-
判断两个请求是否来自于同一个浏览器(例如用户保持登录状态)
-
如果
cookie的生存时间
是整个会话期间的话,那么浏览器会将cookie保存在内存
中,浏览器关闭时就会自动清除这个cookie
。 -
为什么是http的一个扩展?
http头部是专门负责设置以及发送cookie的,它们分别是Set-Cookie以及Cookie。 当服务器返回给客户端一个http响应信息时,其中如果包含Set-Cookie这个头部时,意思就是指示客户端建立一个cookie,并且在后续的http请求中自动发送这个cookie到服务器端,直到这个cookie过期。
-
作用
-
会话管理 登陆、购物车、游戏得分或者服务器应该记住的其他内容
-
个性化 用户偏好、主题或者其他设置
-
追踪 记录和分析用户行为
-
-
分类:
-
会话 Cookies
会话 Cookie
有个特征,客户端关闭时Cookie
会删除,因为它没有指定Expires
或Max-Age
指令。 -
永久性 Cookies 不会在客户端关闭时过期,而是在
特定日期(Expires)
或特定时间长度(Max-Age)
外过期。
-
session:
1:Session
是服务器端使用的一种记录客户端状态
的机制,是服务器端为客户端所开辟的存储空间。
-
如果说
Cookie机制
是通过检查客户身上的“通行证”
来确定客户身份的话,那么Session机制
就是通过检查服务器上的“客户明细表”
来确认客户身份
。
-
Session
相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
区别:
-
cookie数据存放在客户的浏览器上,session数据放在服务器上。
-
cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
-
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
-
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
-
可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。