http协议是一种无状态的协议,浏览器对服务器的每一次请求都是独立的。为了使得web能够产生一些动态信息,就需要保存”状态”,而cookie和session机制就是为了解决http协议无状态而产生。cookie是一种在客户端保存状态的方案,session是一种在服务器端保存状态的方案。

2、cookie和session的区别

在学校旁边的一家面馆,有消费三碗免费一碗的活动。然而一次性消费三碗的可能性很小,需要用某种方式来记录顾客的消费状态,这时就有两种方案:

cookie方案: 发给顾客一张卡,上面记录着消费量,一般还有个时限。每次消费的时候顾客只要出示这张卡,则此次消费的状态就被记录下来了。这就是在客户端保持状态。

session方案: 同样发给顾客一张卡,但是卡上只有一个卡号,用来标识用户身份,其他什么都没有。每次顾客去消费时,只要出示这张卡,则店员就在店里的记录本上找到卡号所对应的记录,并且添加一些消费信息。这就是在服务器端保存状态的方法。

由于session方案需要session id(卡号)将客户端和服务器端连接起来,所以一般session机制需要借助cookie来在客户端保存session id。当然除了cookie还有一种url重写的方法也能够实现session机制。

3、cookie

cookie是由服务端生成,并发送给浏览器,由浏览器将cookie保存到本地文件内。一般在浏览器的”Internet选项->浏览历史记录->设置->查看文件”路径下保存。如图:cookie文件的名字一般是user@domain。

cookie文件的内容都是经过加密的,需要经过CGI程序处理。cookie文件的内容有name、value、expire(过期时间)、path、domain(域)、以及secure(安全)。

path: 指定与cookie关联的页面。

domain:指定关联的服务器或域。

secure: 指定cookie的值如何通过网络在用户和web服务器之间传递。缺省情况下,这个属性为空,默认使用http传递数据。如果被标记为”secure”,则使用HTTPS传递数据。

expire:一般cookie生成时就会被指定一个expire的值,也就是生存时间。在这个周期内cookie是有效的,超过这个周期cookie就会被清除。

cookie可以让浏览器记住访问者的特定信息,如上次访问的位置、花费的时间等。cookie最典型的应用就是自动登录,即登录某个站点之后,在有效时间内打开这个站点可以不再输入账号密码而自动登录。

cookie实际利用了网页代码中的http头部信息进行传递。浏览器打开一个页面时,服务器会将cookie伴随着网页数据传回到浏览器,浏览器会根据相关设置考虑是否保存cookie。

由于cookie中包含了一些敏感信息,虽然信息经过加密,但是如果被别人截获,那么只要把cookie向服务器提交,那么就可以冒充其他人访问服务器。所以一般不要使用自动保存密码等功能。

4、session

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含一个session id。如果有则表明已经为此客户端创建过session,服务器就按照这个session id查找出服务器端保存的session(查找失败的话,会创建一个新的session)。如果请求中不包含session id,则就回创建一个新的session,并把session id返回到客户端进行保存。

客户端浏览器可以通过cookie保存session id,但是cookie可以被浏览器禁止。

还有一种url重写的技术,就是把session id直接附加在URL路径的后面。

还有一种表单隐藏字段技术,就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

session id一旦被攻击者而已获得,攻击者可以伪装成请求者对服务器发起请求。

5、总结

cookie数据存放在浏览器上,session数据存放在服务器上。一般把登陆信息用session保存。

session会在一定时间内保存在服务器上,当访问增多时,会占用服务器的性能。

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

 

web存储中cookie、session区别的更多相关文章

  1. html5的web存储与cookie的区别

    以下从3个方面进行比较: 1,容量:cookie只有4KB,localStorage和sessionStorage最大容量5M 2,是否会携带到ajax中:cookie由每个对服务器的请求来传递,会影 ...

  2. 巨人大哥谈Web应用中的Session(session详解)

    巨人大哥谈Web应用中的Session(session详解) 虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术. ...

  3. Web Storage和cookie的区别——每日一题20190629

    Web Storage? 使用HTML5可以在本地存储用户的浏览数据. 使用的主要目的是为了克服Cookie带来的一些限制,当数据需要被严格控制在客户端上时,无需持续的将数据发回服务器 主要目标: 1 ...

  4. 关于web会话中的session过期时间的设置

    关于web会话中的session过期时间的设置 1.操作系统: 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置— ...

  5. ASP.NET Web Service中使用Session 及 Session丢失解决方法 续

    原文:ASP.NET Web Service中使用Session 及 Session丢失解决方法 续 1.关于Session丢失问题的说明汇总,参考这里 2.在Web Servcie中使用Sessio ...

  6. flask中cookie,session的存储,调用,删除 方法(代码demo)

    # -*- encoding: utf-8 -*- # cookie,session的存储,调用,删除 from flask import Flask,make_response,request,se ...

  7. WEB应用中的SESSION知多少?

    作为一名WEB开发程序员,对session的理解是最基础的,但是现状是WEB程序员遍地都是,随便一划拉一大把,不过估计能把session能透彻理解的人应该不是很多,起码我之前对此是知之甚少,偶然看到的 ...

  8. cookie session区别

      先理解为什么出现cookie和session: 为了使得网站可以跟踪客户端与服务器之间的交互,保存和记忆每个用户的身份和信息,我们需要一种强有力的解决方案,这样就产生了会话控制. 会话控制思想就是 ...

  9. 【对比分析二】Web Storage和cookie的区别

    1)  存储空间不同. a)  Web Storage能提供5MB的存储空间(不同浏览器的提供的空间不同).Cookie仅4KB. b)  Web Storage每个域(包括子域)有独立的存储空间,各 ...

随机推荐

  1. ORM关于表那些事

    一.. ORM表和表之间的关系 1. 一对多 --> 外键(ForeignKey) 2. 多对多 --> 另外一张关系表(ManyToManyField) 1. 三种方式 1. 自己建立第 ...

  2. 【坦克大战】Unity3D多人在线游戏(泰课的坦克大战--旋转的螺丝钉)

    [坦克大战]Unity3D多人在线游戏 http://www.taikr.com/my/course/937 1.NetworkManager的介绍: 说明:选择固定生成时会自动寻找有StartPos ...

  3. Ubuntu下基于Virtualenv构建Python开发环境

    1.安装virtualenv并建立虚拟环境 1).更新pip版本 sudo pip install --upgrade pip 如果出现如下异常: File , in <module> f ...

  4. Android Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict with dependency

    错误内容: Error:Execution failed for task ':app:preDebugAndroidTestBuild'.> Conflict with dependency ...

  5. Django+Vue打造购物网站(十一)

    第三方登录 微博创建应用,修改回调地址 http://open.weibo.com/authentication 安装第三方登录插件 https://github.com/python-social- ...

  6. 搭建vsf

    参考: 1.https://blog.csdn.net/liuzhenwen/article/details/7026263 我是全部替换了/lib/为/lib64/ 2.https://blog.c ...

  7. 实战Google深度学习框架-C3-TensorFlow入门

    第三章:TensorFlow入门 TensorFlow存在计算模型,数据模型和运算模型(本文用TF代表TensorFlow) 3.1 计算模型-计算图 3.1.1 计算图的概念 TensorFlow这 ...

  8. Flask进阶

    Threading.local 作用:为每个线程创建一个独立的空间,使得线程对自己的空间中的数据进行操作(数据隔离). 应用: flask上下文管理中的local中比这更高级,为协程. DBUtils ...

  9. Hadoop基础-镜像文件(fsimage)和编辑日志(edits)

    Hadoop基础-镜像文件(fsimage)和编辑日志(edits) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看日志镜像文件(如:fsimage_00000000000 ...

  10. jQuery使用(十二):工具方法之type()之类型判断

    type()的使用 类型判断方法之is...() 实现原理可以参考我的另一篇js源码剖析博客: 类型和原生函数及类型转换(二:终结js类型判断) $.type( undefined ) === &qu ...