深入学习Cookie和Session

阅读更多

      出自 (深入 分析JavaWeb技术内幕 ,并向大家安利这本书,作者:许令波)  

      session和 cookie简单来说就是HTTP的配置项,在servlet规范中只是对应了一个类而已;但是当我们的系统大到需要很多的cookie的时候,我们不得不考虑HTTP对cookie数量和大小的限制 ;session也会遇到这样的问题,当我们的一个应用系统有几百台服务器时,如何解决 session在 服务器之间的共享问题?还有一些安全问题,如cookie 被盗和cookie伪造等问题如何避免?

        session和cookie都是为了保持访问用户与后端服务器的交互状态,各有优缺点,然而 具有讽刺意味的是他们的优点和他们,例如,使用cookie来传递信息的时候,随着cookie个数的增多和访问量的增加,它占用的网络宽带也越来越大;而session的致命弱点是不容易在多台服务器之间共享,这也限制了session的使用。

 

      深入理解cookie          

      cookie的作用:通俗的来讲就是当一个用户通过http访问一个服务器时,这个服务器会将 一些Key/Value键值对返回给客户浏览器,并给这些数据加上一些限制条件,在条件符合时在这个用户下次访问的这个服务器的时候,数据又完整的被带回到服务器。更加通俗的例子就是:像你在去超市购物时,第一次给你办一张购物卡,在这个购物卡里 放一些个人信息,下次你再来这个超市的时候,直接刷卡就好了。

     当前的cookie有两个版本Version 0和Version 1,他们有两种审核制响应头的标识,分别是“Set-Cookie”和“Set-Cookie2”。这两个版本的属性项有些区别:

 

深入学习Cookie和Session_第1张图片
 
深入学习Cookie和Session_第2张图片
     以上这两个版本的Header头的标识符是不同的,我们常用的是Set-Cookie:userName= “haha”;Domain = "taoyongpan.xin",这是Version 0的形式。针对Set-Cookie2是这样设置的:Set-Cookie2:userName= “haha”;

Domain = "taoyongpan.xin";Max-Age = 1000。但是在JavaWeb的Servlet规范中并支持Set-Cookie2中的响应头,在实际应用中Set-Cookie2的一些 属性项却可以设置在Set-Cookie中,如这样的配置:Set-Cookie:userName=“haha”;Version = “1”;Domain = “taoyongpan.xin”;Max-Age = 1000。但是当我们用Servlet3.0规范来创建一个Cookie对象的时候,该Cookie即支持Version1也支持Version 0 ;

       但是我们创建Cookie的时候,要注意 以下几点:

1、所创建的Cookie的NAME不能和 Set-Cookie和Set-Cookie2 的属性项值一样,如果一样会抛出IllegalArgumentException异常。

2、所创建的Cookie的NAME和VALUE的值不能设置为ASSIC字符,如果 要使用中文,可以通过URLEncoder将其编码,否则会抛出IllegalArgumentException异常。

3、当NAME和VALUE的值出现一些TOKEN字符(如“\”、“,”等 )时,构建返回头会将该Cookie的Version自动设置为1;

4、当该Cookie的属性项中出现Version1的属性项的时候,构建HTTP响应头同样会将 Version设置为1.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

  • 深入学习Cookie和Session_第3张图片
  • 大小: 519.4 KB
  • 深入学习Cookie和Session_第4张图片
  • 大小: 840.1 KB
  • 查看图片附件

你可能感兴趣的:(web)