cookie AND session
首先cookie是用来标识用户身份以及追踪用户状态的,下面我用自己的话来描述一下cookie的工作流程~
某一天,mendy第一次登录baidu这个网站。Baidu发现mendy是第一次登录,于是baidu会创建一个唯一的标识码给mendy,同时baidu会以这个标识码作为索引将标识码添加到后端的数据库中(这个标识码可能是cookie:1008),接下来,baidu会在http response中添加set-cookie:cookie:1008返回给mendy的浏览器。mendy的浏览器会将这个cookie信息添加到它的cookie文件中,下次mendy再一次访问baidu的时候,会从cookie文件中找到对应的cookie信息添加到http请求报文中发送给baidu服务器,(cookie包括过期时间,路径,域,名字,值。如果不设置cookie的过期时间,默认过期时间是浏览器的会话期间。如果不设置过期时间,cookie是存储在内存中的,如果设置了过期时间,cookie就会存储在硬盘上直到过期为止.cookie的范围就是路径+域,如果某个cookie的范围大于等于请求的资源所在位置,则把该cookie附加在http请求头部。)服务器就会根据对应的cookie信息在后端数据库中找到mendy的信息以及mendy之前在baidu上的操作。
session的作用和cookie是差不多的。
session是服务器用一种类似于哈希表的结构保存信息。
一天mendy请求baidu,baidu会检测这个请求中是否包含了session_id,如果包含的话则会去搜索对应的session。如果没有包含session_id 的话,baidu则会创建一个session_id并返回给浏览器。session了解的不太多……
其实还是不理解,到底cookie和session有什么区别,因为在看session的时候还提及到了将seesion_id用cookie保存,总之就是非常混乱…..但是看到网上举的一个例子还挺不错的但还是不理解不理解不理解不理解……
cookie和session最大的区别就是cookie的信息存储在客户端而session的信息存储在服务器上。
例子就是emmmmmmmmmmmm………
办咖啡店的会员卡:
cookie就是类似店员给你一张会员卡,上面详细记录了你什么时间喝了多少杯啊等等。
session就是店员给了你一张只有会员号的会员卡,详细的信息你需要提供卡号让店员帮你查询。
总之啦,这两个机制都是为了解决http协议是无状态的。
差不多就是这个样子,今后再继续看看吧………….