cookie与session会话跟踪技术

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。如果没有会话跟踪技术的话,每次请求都需要进行用户登录,才能确定用户身份,这样是很不合理的,所以需要用到会话跟踪技术。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

参考https://www.cnblogs.com/l199616j/p/11195667.html

Cookie机制

一个用户的所有请求操作都应该属于同一个会话。

Web应用程序是使用HTTP协议传输数据的,而HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。而Cookie可以跟踪会话,弥补了HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。

Cookie机制相当于给客户端们颁发一个通行证,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。(Cookie功能需要浏览器的支持)

Cookie具有不可跨域名性。Cookie在客户端是由浏览器来管理的。浏览器判断一个网站是否能操作另一个网站Cookie的依据是域名。Google与Baidu的域名不一样,因此Google不能操作Baidu的Cookie,从而保证用户的隐私安全。

Cookie的maxAge决定着Cookie的有效期,表示该Cookie会在maxAge秒之后自动失效。

Session机制

除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session是服务器端使用的一种记录客户端状态的机制每个用户都会有一个独立的Session。使用上比Cookie简单一些,相应的也增加了服务器的存储压力

客户端浏览器访问服务器的时候,服务器把客户端信息以Session形式记录在服务器上,对应一个唯一的SessionID,而SessionID这一数据则是用Cookie保存到客户端。

img

客户端浏览器再次访问时,通过http请求的header上的cookie属性将 SessionID提交到服务器端,服务器端用该SessionID 取出内存中对应的Session,提供给请求使用,接下来只需要从该Session中查找该客户的状态就可以了。

img

用户提交页面时,会存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。(或者换用URL重写的方式传递session_id)

Session生命周期一般为半个小时,登录后半个小时没有任何http请求后会销毁session,提示重新登录,这样可以减少服务器压力。

Cookie+Session

img

img

这里写图片描述

总的来说,当我们登录网站勾选保存用户名和密码的时候,一般保存的都是cookie,将用户名和密码的cookie保存到硬盘中,这样再次登录的时候浏览器直接将cookie发送到服务端验证。

就是浏览器每次发送请求,都在header上附上cookie,而cookie中带有session_id,服务器根据session_id找到对应的session,可以拿到用户相应的偏好设置和历史记录,提供针对性的服务。

参考COOKIE和SESSION有什么区别

发布了131 篇原创文章 · 获赞 12 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_41519463/article/details/103838859
今日推荐