cookie与session的区别

cookie:当用户通过httd协议访问一个服务器的时候,这个服务器会将一些Name/Vaule键值对返回给客户端浏览器,并将这些数据加上一些限制条件。在条件符合时,这个用户下次再访问服务器的时候,数据又被完整的带给服务器。

        因为http是一种无状态协议,用户首次访问web站点的时候,服务器对用户一无所知。而cookie就像是服务器给每个来访问的用户贴的标签,而这些标签就是对来访问的客户端的独有的身份的一个表示,这里就如同每个人的身份证一样,带着你的个人信息。而当一个客户端第一次连接过来的时候,服务端就会给他们打一个标签,这里就如同给你发了一个身份证,当你下载带着这个身份证来的时候,服务器就知道你是谁了。所以cookie是存在客户端的,这里其实就是在你的浏览器中。

        cookie中包含了一个由名字=值(name = value)这样的信息构成的任意列表,通过Set-Cookie或Set-Cookie2 HTTP响应(扩展)首部将其贴到客户端身上。

其实这里有一个非常典型的应用,就是关于你登陆就很多网站的账号信息,你让记住密码之后,一段时间内,不需要输入密码,每次都是登录状态。

cookie的分类:

会话cookie:不设置过期时间,保存在浏览器的内存中,关闭浏览器,cookie便被摧毁

普通cookie:设置了过期时间,保存在硬盘上

cookie属性:Version 0 和Version 1

常用的为Version 0

Version 0 的属性:

NAME = Value:键值对设置要保存的Name/Value,这里的name不能喝其他属性的名字一样

Expires:过期时间

Domain:生成该Cookie的域名

Path:该Cookie是在当前的哪个路径下生成

Secure:如果设置了这个属性,那么只会在SSH连接时才会回传该Cookie

Version 1的属性:

Name = Value:键值对设置要保存的Name/Value,这里的name不能和其他属性的名字一样

Comment:主是想,用于说明该Cookie有什么用途

CommentURL:该服务器为此COokie提供URI注释

Discard:是否在回话结束丢弃该Cookie,默认为false

Domain:生成该Cookie的域名

Max-Age:最大失效时间,与Version 0不同的是这里设置的是在多少秒后失效

Path:该Cookie是在当前的哪个路径下生成

Port:该 Cookie 在什么端口下可以回传服务端,如果有多个端口,以逗号隔开

Secure:如果设置了这个属性,那么只会在SSH连接时才会回传该Cookie

关于Session:

    Cookie可以让服务器端跟踪每个客户端的访问,但是每个客户端的访问都必须传回这些Cookie,如果Cookie很多,就会无形地增加了客户端与服务端的数据传输量,而Session的出现就是为了解决这个问题。

    同一个客户端每次和服务端交互时,不需要每次都传回所有的Cookie值,而是只要传回一个ID这个ID是客户端第一次访问服务器的时候生成的,而且每个客户端是唯一的。这样每个客户端就有了一个唯一的ID,客户端只要传回这个ID就行了,这个ID通常是NAME为JSESIONID的一个Cookie。所以Session其实是利用Cookie进行信息处理的。

    

cookie和session的共同之处:都是用来跟踪浏览器用户身份的会话方式

区别是:cookie数据保存在客户端,session数据保存在服务器端

cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗。如果主要考虑到安全应当使用session,当然也没有绝对的安全,只是相对cookie,session更加安全

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用cookie

cookie和session各有优缺点,所以将登录信息等重要信息存放为session;其他信息如果需要保留,可以放在cookie中。

  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值