Cookie与Session的作用与原理

原创 2018年04月16日 15:46:06

HTTP是一个无状态的协议,对事物处理没有记忆功能。

为了解决http的无状态现象,引入cookie和session。

1.  Cookie详解

1)  简介:

Cookie,是指某些网站为了辨别用户身份、进行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附在请求资源的HTTP请求头上发送给服务器。

4.  读取cookie

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

3)  作用:

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

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

2、购物车功能。

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

4)  缺陷:

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

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

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

2.  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、购物车功能。

3.  Cookie和Session的区别

1)  存放位置不同:Cookie保存在客户端,Session保存在服务端。

2)  存取方式的不同:

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

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

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

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

4)  有效期的不同:

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

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

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

6)  跨域支持上的不同:

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


Cookie和Session的作用和工作原理

一、Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒...
  • guoweimelon
  • guoweimelon
  • 2016-03-14 16:18:59
  • 9793

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

Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右)...
  • yanghaitao_1990
  • yanghaitao_1990
  • 2016-06-20 20:08:28
  • 3827

session和cookie作用原理,区别

Cookie概念       在浏览某些 网站 时,这些网站会把 一些数据存在 客户端 , 用于使用网站 等跟踪用户,实现用户自定义 功能.       是否设置过期时间:  ...
  • zengxiaosen
  • zengxiaosen
  • 2016-12-30 19:42:42
  • 427

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

一、cookie机制和session机制的区别   具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。   同时我们也看到,由于在服务器端保...
  • wplblog
  • wplblog
  • 2016-07-18 07:37:36
  • 3770

Cookie和Session的原理

Session是什么     Session一般译作会话,牛津词典对其的解释是进行某活动连续的一段时间。从不同的层面看待session,它有着类似但不全然相同的含义。比如,在web应用的用户看来...
  • Sup_Heaven
  • Sup_Heaven
  • 2014-09-21 21:23:08
  • 3281

深入分析理解session与cookie的作用

session与cookie在web开发中我们用到的不少了,那么关于session与cookie你有深入理解吗?今天我们就一起来看一篇关于深入分析理解session与cookie的作用的例子。 ...
  • u011816231
  • u011816231
  • 2017-04-06 09:38:59
  • 5094

ASP.NET 之深入浅出Session和Cookie

Cookie的使用最主要的注意事项时其生命周期和其安全性,如何防止Cookie的欺骗是后续深入研究学习的,安全性上讲,伪造session要比cookie难得多,session相对更安全一些.为了数据的...
  • lishehe
  • lishehe
  • 2013-08-04 18:03:58
  • 3822

Servlet之cookie和session简介及其作用

一、cookie和session简介1.浏览器和服务器是多对一的关系2.业务:登录时记录账号,后续的页面上显示此账号3.使用如下对象存储账号都不行 request:多个请求之间共用账号,不能用requ...
  • qq_27853161
  • qq_27853161
  • 2016-12-21 17:20:05
  • 537

Session原理解释,为什么使用session

Cookie的作用之前的一篇博客已经介绍了Cookie是用来记录服务器和客户端的状态,或者说记录用户的登录信息。 我们的HTTP是无连接的,所以我们需要Cookie来进行用户和连接信息的记录。 ...
  • jlin991
  • jlin991
  • 2017-02-25 23:35:44
  • 2751

理解Session和Cookie机制

一、Cookie机制 在web程序中是使用HTTP协议来传输数据的,因为http是无状态协议,一旦数据交换完毕,客户端和服务器端的连接就会关闭,再次交换数据需要建立新的连接,所以无法实现会话跟踪,c...
  • bingogirl
  • bingogirl
  • 2016-06-25 23:41:51
  • 1267
收藏助手
不良信息举报
您举报文章:Cookie与Session的作用与原理
举报原因:
原因补充:

(最多只允许输入30个字)