首先先来个总结:
当你浏览网页的的时候,会有一些推送消息,大多数是因为你最近浏览过同类的东西。这是因为,你浏览某个网页的时候,web服务器会先送一些资料放在你的电脑上,你打的字、选过的东西等等,cookie都会帮你记录下来。当你下次再进同一个网站,web服务器会先看看它上次留下来的cookie资料,有的话,就会依旧cookie里面的内容来判断使用者,送出特定的网页内容。
要了解什么是cookie什么是session,首先先了解一下下面的概念:
无状态的HTTP协议:
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP协议)是一种通信协议,它允许将超文本标记语言文档(HTML文档)从web服务器传送到客户端的浏览器。
HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务端的连接就会关闭,再次交换数据需要建立新的连接。也就是说,服务器无法从连接上跟踪会话。
会话跟踪:
会话,指的是用户登录网站后的一系列动作,比如浏览商品添加到购物车并购买。会话跟踪是web程序常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是cookie和session。cookie通过在客户端记录信息确定用户身份,session通过在服务器端记录信息确定用户身份。
Cookie:
由于HTTP协议是一种无状态的协议,服务器单从网络连接上无从知晓客户身份。比如用户A购买了一件商品放入购物车,当再次购买商品的时候服务器已经无法判断该购物行为是属于用户A的会话还是用户B的会话了。该怎么办了?cookie其实是一小段的文本信息。客户端请求服务器,如果服务器需要记录用户状态,就使用response想客户端浏览器颁发一个cookie,客户端就会把cookie保存起来。
当浏览器请求该网站的时候,浏览器把请求网址连同该cookie一同提交给服务器,服务器检查该cookie,以此来辨认用户状态。服务器还可以根据内容修改cookie的内容。(cookie的内容主要包括名字、值、过期时间、路径和域。路径和域一起构成了cookie的作用范围)。
会话cookie和持久cookie
若不设置过期时间,则表示这个cookie的生命周期为浏览器的会话期间,关闭浏览器窗口,cookie就会消失,这种生命周期巍峨浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘内而是保存在内存里,当然这种行为并不是规范规定的。
若设置了过期时间,那么浏览器会把cookie存在硬盘上,关闭浏览器后再次打开浏览器,这些cookie仍然有效直至超过设定的过期时间。存储在硬盘上的cookie可以在浏览器的不同进程间共享。这就是持久cookie。
cookie具有不可跨域名性,浏览器访问百度不会带上谷歌的cookie。
session
session是另一种记录客户状态的机制,不同的是cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问服务器的时候,服务器会把客户端信息以某种形式记录在服务器上,这就是session。客户端浏览器再次访问时只需要从该session中查找该客户的状态就可以了。
未完待续......