浅谈cookies和session

HTTP协议特性

HTTP协议对于事务的处理是没有记录能力的,也就是服务器不知道客户端是什么状态

意味着如果后续需要处理前面的信息,需要重传

这会导致重复传递一些信息,才能获取响应,   此时就需要session和cookies,

session和cookies

session在服务端,用来保存用户的session信息;Session,中文称之为会话,其本身的含义是指有始有终的一系列动作 / 消息。比如,打电话时,从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个 Session。

而在 Web 中,Session对象用来存储特定用户 Session所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session对象中的变量将不会丢失,而是在整个用户 Session中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有 Session,则 Web 服务器将自动创建一个 Session对象。当 Session过期或被放弃后,服务器将终止该 Session。

cookies在客户端,即浏览器端,浏览器在下次访问网页时会自动附带上它发送给服务器,服务器通过识别cookies并鉴定出是哪个用户,然后判断用户的登录状态进而给出对应的响应。

Cookies 指某些网站为了辨别用户身份、进行 Session跟踪而存储在用户本地终端上的数据。


Session维持

那么,我们怎样利用 Cookies 保持状态呢?当客户端第一次请求服务器时,服务器会返回一个响应头中带有 Set-Cookie 字段的响应给客户端,用来标记是哪一个用户,客户端浏览器会把 Cookies 保存起来。当浏

览器下一次再请求该网站时,浏览器会把此 Cookies 放到请求头一起提交给服务器,Cookies 携带了 Session ID 信息,服务器检查该 Cookies 即可找到对应的 Session是什么,然后再判断 Session来以此来辨认用户状态。

在成功登录某个网站时,服务器会告诉客户端设置哪些 Cookies 信息,在后续访问页面时客户端会把 Cookies 发送给服务器,服务器再找到对应的 Session加以判断。如果 Session中的某些设置登录状态的变量是

有效的,那就证明用户处于登录状态,此时返回登录之后才可以查看的网页内容,浏览器再进行解析便可以看到了。

反之,如果传给服务器的 Cookies 是无效的,或者 Session已经过期了,我们将不能继续访问页面,此时可能会收到错误的响应或者跳转到登录页面重新登录。

所以,Cookies 和 Session需要配合,一个处于客户端,一个处于服务端,二者共同协作,就实现了登录 Session控制。



常见误区

在谈论 Session机制的时候,常常听到这样一种误解 ——“只要关闭浏览器,Session就消失了”。可以想象一下会员卡的例子,除非顾客主动对店家提出销卡,否则店家绝对不会轻易删除顾客的资料。对 Session来说,也是一样,除非程序通知服务器删除一个 Session,否则服务器会一直保留。比如,程序一般都是在我们做注销操作时才去删除 Session。

但是当我们关闭浏览器时,浏览器不会主动在关闭之前通知服务器它将要关闭,所以服务器根本不会有机会知道浏览器已经关闭。之所以会有这种错觉,是因为大部分网站都使用会话 Cookie 来保存 Session ID信息,而关闭浏览器后 Cookies 就消失了,再次连接服务器时,也就无法找到原来的 Session了。如果服务器设置的 Cookies 保存到硬盘上,或者使用某种手段改写浏览器发出的 HTTP 请求头,把原来的 Cookies发送给服务器,则再次打开浏览器,仍然能够找到原来的 Session ID,依旧还是可以保持登录状态的。

而且恰恰是由于关闭浏览器不会导致 Session被删除,这就需要服务器为 Session设置一个失效时间,当距离客户端上一次使用 Session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把 Session删除以节省存储空间。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在浏览网页时,很多页面是需要登录的,但是我们知道HTTP协议是无状态协议,那么我们在网站的各个网页间跳转时,为什么...
    一根薯条阅读 9,626评论 1 10
  • 无状态HTTP HTTP 的无状态是指 HTTP 协议对事务处理是没有记忆能力的,也就是说服务器不知道客户端是什么...
    原点_da4e阅读 2,976评论 0 0
  • 对于需要登录的情况,有些页面只有登录后才可以访问,而且登录之后可以连续访问很多次网站,但有时候过一段时间就会需要重...
    若星汉天阅读 3,273评论 0 1
  • 夜莺2517阅读 127,828评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 11,866评论 1 6

友情链接更多精彩内容