cookie与session

来源:互联网 发布:日本轴承知乎 编辑:程序博客网 时间:2024/05/21 19:12
  1. 注意:

    ①函数有返回值②php设置的cookie不能立即生效,要等到下个页面才能看到;JavaScript设置的cookie立即生效③cookie没有显示的删除函数,可以设置expire过期时间,自动触发浏览器的删除机制
    用途:
    cookie通常用来存储一些不是很敏感的信息,或者进行登录控制,也可用来记住用户名、记住免密码登录、防止刷票等,cookie不是越多越好,会增加宽带,增加流量消耗,一个域名的每个cookie限制以4千字节(KB)键值对的形式存储
    还有一种cookie是flash创建的,即使清空浏览器所有隐私数据,cookie还会存在硬盘上,因为它只受flash管理,很多网站采用这种技术识别用户
    cookie跨域,主要是为了统一应用平台,实现单点登录

  2. 格式:
    cookie中保存的信息都是文本信息,附加在http消息头中传递,由键/值对组成,如:

Set-Cookie:key = value;Path = /

cookie中存放的信息 = cookie本身属性(comment、domain、max-age、path、secure、version) + 用户自定义属性(只能包含一个自定义键值对)    comment:对cookie的描述    domain:定义可访问该cookie的域名。如设置domain为.bigsite.com,则sub1.bigsite.com和sub2.bigsite.com都可以访问已保存在客户端的cookie,这是还需设置Path = /    max-age:定义cookie的有效时间,用秒计算,超过有效期,cookie的信息不会从客户端附加在HTTP消息头中发送到服务端    path:定义可以访问cookie的页面的路径,缺省状态下path为产生cookie的路径,此时cookie可以被该路径以及其子路径下的页面访问;可以设置path = /,使cookie可以被网站下所有页面访问    secure:定义cookie的安全性。值为true时,必须是HTTPS状态下cookie才从客户端附加在HTTP消息中发送到服务器端,HTTP状态不发送;值为false时,HTTP状态可传递,secure缺省为false      version:定义cookie的版本

session

Session:即会话,指一种持续性的、双向的连接。Session与Cookie在本质上没有区别,都是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接状态的机制。Session也是一个通用的标准,但在不同的语言中实现有所不同。针对Web网站来说,Session指用户在浏览某个网站时,从进入网站到浏览器关闭这段时间内的会话。由此可知,Session实际上是一个特定的时间概念。

典型运用场景:如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的session,用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个session是保存在服务端的,有一个唯一的标识。

session与cookie的区别:

1、session在服务器端,cookie在客户端(浏览器)
2、session存在服务器的一个文件里(默认),不是内存
3、session的运行依赖session id,而session id是存在cookie中的,也就是说,如果浏览器禁用了cookie,同时session也会失效(当然也可以在url中传递)
4、session可以放在文件、数据库、内存中都可以
5、“用户验证”这种场合一般会用session
因此,维持一个会话的核心就是客户端的唯一标识,即session id

总结:
session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中

cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现session的一种方式

参考文章链接

原创粉丝点击