HttpClient Cookies

from http://www.javaeye.com/topic/363667

 

 

HttpClient Cookies

简介

 

HttpClient 支持自动管理 Cookies ,允许服务端设定 Cookies ,并在请求时自动返回客户端的 Cookies 信息。客户端也可以手动的设置 Cookies 发送到服务端。

 

不幸的是,同一时间内有太多的 Cookies 标准: Netscape Cookie, RFC2109, RFC2965 以及大量供应商不符合规范的自定义 Cookies 标准。针对此, HttpClient 提供 Cookies 管理策略驱动。这片文章意在阐述怎么样去使用不同标准的 Cookies 以及如何解决在使用 CookiesHttpClient 时一些共同的问题。

 

支持的规格

 

以下 Cookies 标准, HttpClient3.1 可以支持。

 

RFC2109

 

RFC2109 W3C 组织第一次推出的官方 Cookies 标准。理论上,所有使用版本 1Cookies 的服务端都应该使用此标准。 HttpClient 已经将此标准设定为默认。

 

遗憾的是,许多服务端不正确的实现了标准或者仍然使用 Netscape 标准。所有有时感到此标准太多于严格。

 

RFC2109 HttpClient 使用的默认 Cookies 协议。

 

RFC2965

 

RFC2965 定义了版本 2 并且尝试去弥补在版本 1 Cookie RFC2109 标准的缺点。 RFC2965 是,并规定 RFC2965 最终取代 RFC2109.

 

发送 RFC2965 标准 Cookies 的服务端,将会使用 Set-Cookie2 header 添加到 Set-Cookie Header 信心中, RFC2965 Cookies 是区分端口的。

 

Netscape 标准

 

Netscape 是最原始的 Cookies 规范,同时也是 RFC2109 的基础。尽管如此,还是在很多重要的方面与 RFC2109 不同,可能需要特定服务器才可以兼容。

 

Browser Compatibility

 

这种兼容性设计要求是适应尽可能多的不同的服务器,尽管不是完全按照标准来实现的。如果你遇到了解析 Cookies 的问题,你就可能要用到这一个规范。

 

有太多的 web 站点是用 CGI 脚本去实现的,而导致只有将所有的 Cookies 都放入 Request header 才可以正常的工作。这种情况下最好设置 http.protocol.single-cookie-header 参数为 true

 

Ignore Cookies

 

此规格忽略所有 Cookie 。被用来防止 HttpClient 接受和发送的 Cookie

 

Spacifying the Specification

 

有俩中方式去规定使用哪种 Cookies 规范,每个 HttpMethod 实例都有 HttpMethodParams ,他的 policy 值必须使用方法 CookiePolicy.registerCookieSpec() 来注册。

 

HttpMethod method = new GetMethod();

Method.getParams().setCookiePolicy(CookiePolicy.RFC_2109);

 

手动处理 Cookies

 

HttpClient Cookie 管理 API 可以手动处理 Cookie 。可以手动设置 RequsetCookie headers 或是处理 ResponseSet-Cookieheaders 或是用自动 Cookie 管理去代替。

 

HttpMethod method = new GetMethod();

Method.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES);

Method.setRequestHeader(“Cookie”, “special_cookie=value”);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值