关于cookie

        简单来说,Cookie是web client与web server传递信息的一种信息单元,其通过Http header进行传递,起到一定的数据缓存或身份识别的作用。下面是java servlet的相关api对Cookie的说明。

1. cookie的创建及属性
       创建一个cookie,就是为servlet创建了一个传递到web浏览器的小信息单元,可以被浏览器保存并再次发送到服务器。一个cookie的值可以唯一标识一个client,因此cookie通常可以作为session的管理器,即保存一个name为sessionid的cookie。
       一个cookie具有一个name和一个value,以及其他的可选的属性,诸如注释、路径、域标识符,存活时间及支持的Http版本号。一些web浏览在处理这些可选属性时可能会存在缺陷,因此为了提高servlet在接收不同的web浏览器的传回的cookie时都能良好的工作,建议谨慎的选择使用这些可选属性。
       Servlet通过调用HttpServletResponse.addCookie方法把cookie添加到响应中,每次调用此方法只会添加一个cookie,该cookie会被作为Http response的头信息的一部分传递到浏览器。浏览器对每个web server支持20个cookie值,并且最多支持不超过300个cookie,而每个cookie不能超过4kb。
       浏览器在向web server发送请求时,会把cookie放入Http request头中。在web container中可以通过调用HttpServletRequest.getCookies方法获取client传递来的cookie,例如在filter或者servlet等可以获取到HttpServletRequest的地方获得cookie。几个cookie可能拥有相同的名字,但却有不同的属性值,以path属性作区,因为对于不同的path,其所关联到的cookie是不同的。
      cookie会影响使用它们的web page的缓存策略。在Http 1.o中,不支持对通过这个Cookie类创建了cookie的页面的缓存。在Http 1.1中,Cookie不支持Http 1.1中的cache control定义。
      这里的Cookie类支持Netscape的v0,同时支持RFC 2109的v1的cookie规范。默认会创建v0的cookie以提高对不同浏览器的互操作性。

2. cookie的domain属性    

        cookie中有一个domain属性,通过此属性指定cookie在该domain下是有效的。domain以"."开头,例:.foo.com,这意味着cookie只对指定的domain是可见的,这里对应的是www.foo.com,但对于fox.com却是不可见的。默认情况下,cookie只能返回到创建它的服务器。如果在一级域名下还有子域名,如a.foo.com, b.foo.com等,为了能使cookie对于这两个子域都可见,那么可以通过设置domain为".foo.com",那么对于a.foo.com中创建的cookie在b.foo.com中是可见的,反之亦然。

3. cookie的生命周期
       每个cookie都有生命周期,这可以通过maxAge属性设置cookie的过期时间。如果maxAge设置为正值,表示在不活动的情况下,过了maxAge秒该cookie会过期;如果设置为负值,则意味着当浏览器退出时,cookie会被删除,也即浏览器不会对cookie做持久性存储;如果设置cookie为0,相当于对浏览器端的cookie做了删除操作。

4. cookie的path属性
        cookie的path属性指定了cookie应该被client返回的路径,即与cookie相关联的那个文件或目录。cookie对于你设置的目录中的所有页面都是可见的,对于此目录的所有递归子目录中的页面也是可见的。cookie的path属性必须包含设置该cookie的那个servlet。例如为cookie设置path为"/catalog",那么对于服务器上/catalog目录下的所有子目录来说,此cookie是可见的。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值