一、Cookie详解

(1)简介

因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么。为了做到这点,就需要使用到Cookie了。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

Cookie(复数形态:Cookies),是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

Cookie是由服务端生成的,发送给客户端(通常是浏览器)的。Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie:

内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。

硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。

(2)工作原理

1、创建Cookie

当用户第一次浏览某个使用Cookie的网站时,该网站的服务器就进行如下工作:

①该用户生成一个唯一的识别码(Cookie id),创建一个Cookie对象;

②默认情况下它是一个会话级别的cookie,存储在浏览器的内存中,用户退出浏览器之后被删除。如果网站希望浏览器将该Cookie存储在磁盘上,则需要设置最大时效(maxAge),并给出一个以秒为单位的时间(将最大时效设为0则是命令浏览器删除该Cookie);

③将Cookie放入到HTTP响应报头,将Cookie插入到一个 Set-Cookie HTTP请求报头中。

④发送该HTTP响应报文。

2、设置存储Cookie

浏览器收到该响应报文之后,根据报文头里的Set-Cookied特殊的指示,生成相应的Cookie,保存在客户端。该Cookie里面记录着用户当前的信息。

3、发送Cookie

当用户再次访问该网站时,浏览器首先检查所有存储的Cookies,如果某个存在该网站的Cookie(即该Cookie所声明的作用范围大于等于将要请求的资源),则把该cookie附在请求资源的HTTP请求头上发送给服务器。

4、读取Cookie

服务器接收到用户的HTTP请求报文之后,从报文头获取到该用户的Cookie,从里面找到所需要的东西。

(3)作用

Cookie的根本作用就是在客户端存储用户访问网站的一些信息。典型的应用有:

1、记住密码,下次自动登录。

2、购物车功能。

3、记录用户浏览数据,进行商品(广告)推荐。

(4)缺陷

①Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。

②由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题。(除非用HTTPS)

③Cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。

二、Session详解

(1)简介

Session代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的。Session是一种服务器端的机制,Session 对象用来存储特定用户会话所需的信息。

Session由服务端生成,保存在服务器的内存、缓存、硬盘或数据库中。

(2)工作原理

1、创建Session

当用户访问到一个服务器,如果服务器启用Session,服务器就要为该用户创建一个SESSION,在创建这个SESSION的时候,服务器首先检查这个用户发来的请求里是否包含了一个SESSION ID,如果包含了一个SESSION ID则说明之前该用户已经登陆过并为此用户创建过SESSION,那服务器就按照这个SESSION ID把这个SESSION在服务器的内存中查找出来(如果查找不到,就有可能为他新创建一个),如果客户端请求里不包含有SESSION ID,则为该客户端创建一个SESSION并生成一个与此SESSION相关的SESSION ID。这个SESSION ID是唯一的、不重复的、不容易找到规律的字符串,这个SESSION ID将被在本次响应中返回到客户端保存,而保存这个SESSION ID的正是COOKIE,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。

2、使用Session

我们知道在IE中,我们可以在工具的Internet选项中把Cookie禁止,那么会不会出现把客户端的Cookie禁止了,那么SESSIONID就无法再用了呢?找了一些资料说明,可以有其他机制在COOKIE被禁止时仍然能够把Session id传递回服务器。

经常被使用的一种技术叫做URL重写,就是把Session id直接附加在URL路径的后面一种是作为URL路径的附加信息,表现形式为:

http://…./xxx;jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764;

另一种是作为查询字符串附加在URL后面,表现形式为:

http://…../xxx?jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

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

(3)作用

Session的根本作用就是在服务端存储用户和服务器会话的一些信息。典型的应用有:

1、判断用户是否登录。

2、购物车功能。

三、Cookie和Session的区别

1、存放位置不同

Cookie保存在客户端,Session保存在服务端。

2 、存取方式的不同

Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比拟艰难的。

而Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。

3、安全性(隐私策略)的不同

Cookie存储在浏览器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。 假如选用Cookie,比较好的方法是,敏感的信息如账号密码等尽量不要写到Cookie中。最好是像Google、Baidu那样将Cookie信息加密,提交到服务器后再进行解密,保证Cookie中的信息只要本人能读得懂。而假如选择Session就省事多了,反正是放在服务器上,Session里任何隐私都能够有效的保护。

4、有效期上的不同

只需要设置Cookie的过期时间属性为一个很大很大的数字,Cookie就可以在浏览器保存很长时间。 由于Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默许为–1,只需关闭了浏览器(一次会话结束),该Session就会失效。

5、对服务器造成的压力不同

Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。而Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。

6、 跨域支持上的不同

Cookie支持跨域名访问,例如将domain属性设置为“.baidu.com”,则以“.baidu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。

参考文献:

1、细说Cookie http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html#_label4

2、描述Cookie和Session的作用,区别和各自的应用范围,cookie、Session工作原理。

http://www.360doc.com/content/11/0706/15/3639038_131844581.shtml

3、深入理解HTTP Session http://lavasoft.blog.51cto.com/62575/275589/

4、Web应用中的Session知多少?http://www.blogjava.net/ohyeah928/archive/2010/01/27/310952.html

5、Cookie和Session的区别-总结很好的文章 http://www.lai18.com/content/407204.html

6、Cookie/Session机制详解 http://blog.csdn.net/fangaoxin/article/details/6952954

7、老生常谈session,cookie的区别,安全性 http://blog.51yip.com/php/938.html

8、Session和Cookie的区别及Session的生命周期 http://blog.csdn.net/shuaishenkkk/article/details/8634917

Cookie和Session的作用和工作原理相关推荐

  1. cookie和session、web服务工作原理、Apache配置php扩展、php简介

    cookie和session: cookie和session区别:cookie数据是存在本地的,而session数据是存在服务端的,session比cookie更安全. cookie:用于http做会 ...

  2. Cookie和Session的作用,区别和各自的应用范围,Session工作原理

    Cookie和Session的作用与区别 Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请 ...

  3. selenium之作用和工作原理

    selenium之作用和工作原理 selenium的作用和工作原理 利用浏览器原生的API,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏 ...

  4. 工业以太网交换机的作用和工作原理详解

    工业以太网交换机是基于以太网传输数据的交换机,以太网采用共享总线型传输媒体方式的局域网.工业以太网交换机的结构是每个端口都直接与主机相连,并且一般都工作在全双工方式.交换机能同时连通许多对端口,使每一 ...

  5. mysql中主从复制包括什么意思_Mysql主从复制作用和工作原理

    一.什么是主从复制 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库.在最常用的mysql数据库中,支持单项.异步赋值.在赋值过程中,一个服务器充 ...

  6. 简述网卡的作用和工作原理_发电机调节器的作用及工作原理

    发电机由发动带动,其转速则是由发动机转速所决定.工作时,发动机转速变化范围很大,这势必对发电机输出电压的大小有很大影响,为使发电机电压 在不同的转速下均能保持一定,且能随发电机转速的变化而自动调节,使 ...

  7. 串口服务器的作用和工作原理是什么

    要了解串口服务器的作用以及工作原理,首先我们就要知道什么是串口服务器,简单来说串口服务器就是一种网络通讯接口转换设备,它可以将我们一些常见的RS232.RS485.RS422串口转换成TCP/IP网络 ...

  8. 滑环电刷作用及工作原理相关介绍

    随着滑环电刷的应用领域越来越广泛,需求量越来越大的今天,如果各位还不知道滑环电刷作用就真的是跟不上工业发展了.下面默孚龙的专家们就来给大家科普一下什么是滑环电刷. 滑环电刷 绕线型异步机虽然在起动和调 ...

  9. 光耦的作用及工作原理是什么

    光耦的作用及工作原理是什么 介绍 光耦指的是光耦合器,在数字电路上获得广泛的应用,那么光耦的作用及工作原理是什么呢?这就来了解下吧. 什么是光耦 光耦合器(opticalcoupler equipme ...

最新文章

  1. 外中断03 - 零基础入门学习汇编语言71
  2. csharp: 百度语音合成
  3. C++编译器对属性和方法的处理机制
  4. ITK:从Seed开始迭代图像
  5. Java压缩技术(四) GZIP——Java原生实现
  6. C++ 构造函数分类以及调用
  7. 【HDU - 1031 】Design T-Shirt(水题 排序)
  8. 【代码笔记】iOS-竖状图
  9. Go语言strings和strconv包
  10. cad两直线相交画圆弧_在CAD图纸中绘制中心线的操作技巧
  11. 金蝶K3销售订单自动携带客户收货信息并可修改,支持下推关联携带
  12. 使用Java生成验证码
  13. Apollo学习笔记(6)module control
  14. 给上层添加SuperSu来获取root权限
  15. java service层怎么写_我是如何写Service的
  16. word文件损坏怎么恢复?
  17. 新栏目上线|我是戴小乐-集美貌与才华于一身~
  18. 欧拉线性筛法求素数(顺便实现欧拉函数的求值)
  19. Android向服务器传递参数方式:PostGet
  20. AudioSourse play loop Clip

热门文章

  1. Android之属性动画初步
  2. mysql分页原理和sqlserver里面序列的用法
  3. 负基础学python编程_【数据科学系统学习】Python # 编程基础[二]
  4. 【QMIX】一种基于Value-Based多智能体算法
  5. docker没有下载完全_会用Docker的人都别装了,这多简单呐
  6. 全地球的水也没办法将这个“特殊”的瓶子装满!
  7. 90后一代人还能通过攒钱改变现状吗?
  8. 这6个动作,据说只有20%的人能做到!| 今日最佳
  9. 每日一笑 | 终于知道为什么胖了之后气质会垮了
  10. 新一代来袭︱不只是舒适,简直是享受,Google公司用的腰靠,到底有什么秘密?...