本文共 5525 字,大约阅读时间需要 18 分钟。
原始的 HTTP 是被设计为无状态的,面向请求/响应的协议,没有特别对一些逻辑相关的请求/响应交换的设置会话状态。 由于 HTTP 协议变得越来越普及和受欢迎,越来越多的从前没有打算使用它的系统也开始为应用程序来使用它,比如作为电子商务应用程序的传输。因此,支持状态管理就变得非常必要了。网景公司,一度成为 Web 客户端和服务器软件开发者的领导方向,在它们基于专有规范的产品中实现了对 HTTP 状态管理的支持。 之后,网景公司试图通过发布规范草案来规范这种机制。 它们的努力通过 RFC 标准跟踪促成了这些规范定义。然而,在很多应用程序中的状态管理仍然基于网景公司的草案而不兼容官方的规范。 很多主要的Web浏览器开发者觉得有必要保留那些极大促进应用程序兼容性的标准草案。BasicClientCookie cookie = new BasicClientCookie("name", "value");// Set effective domain and path attributescookie.setDomain(".mycompany.com");cookie.setPath("/");// Set attributes exactly as sent by the servercookie.setAttribute(ClientCookie.PATH_ATTR, "/");cookie.setAttribute(ClientCookie.DOMAIN_ATTR, ".mycompany.com");
Standard strict:State management policy compliant with the syntax and semantics of the wellbehaved profile defined by RFC 6265, section 4.Standard:State management policy compliant with a more relaxed profile defined by RFC6265, section 4 intended for interoperability with existing servers that do not conform to the wellbehaved profile.Netscape draft (obsolete):This policy conforms to the original draft specification publishedby Netscape Communications. It should be avoided unless absolutely necessary for compatibilitywith legacy code.RFC 2965 (obsolete):State management policy compliant with the obsolete state managementspecification defined by RFC 2965. Please do not use in new applications.--->已废弃RFC 2109 (obsolete):State management policy compliant with the obsolete state managementspecification defined by RFC 2109. Please do not use in new applications--->已废弃Browser compatibility (obsolete):This policy strives to closely mimic the (mis)behavior ofolder versions of browser applications such as Microsoft Internet Explorer and Mozilla FireFox.Please do not use in new applications.--->已废弃Default:Default cookie policy is a synthetic policy that picks up either RFC 2965, RFC 2109or Netscape draft compliant implementation based on properties of cookies sent with the HTTPresponse (such as version attribute, now obsolete). This policy will be deprecated in favor of thestandard (RFC 6265 compliant) implementation in the next minor release of HttpClient.Ignore cookies:所有的cookie将会被忽略在新程序中,强烈建议使用Standard或Standard strict策略。废弃的规范仅应该使用在遗留项目中。下一个HttpClient版本将不会支持废弃的规范。
RequestConfig globalConfig = RequestConfig.custom() .setCookieSpec(CookieSpecs.DEFAULT) .build();CloseableHttpClient httpclient = HttpClients.custom() .setDefaultRequestConfig(globalConfig) .build();RequestConfig localConfig = RequestConfig.copy(globalConfig) .setCookieSpec(CookieSpecs.STANDARD_STRICT).build();HttpGet httpGet = new HttpGet("/");httpGet.setConfig(localConfig);
PublicSuffixMatcher publicSuffixMatcher = PublicSuffixMatcherLoader.getDefault();Registryr = RegistryBuilder. create() .register(CookieSpecs.DEFAULT,new DefaultCookieSpecProvider(publicSuffixMatcher)) .register(CookieSpecs.STANDARD,newRFC6265CookieSpecProvider(publicSuffixMatcher)) .register("easy", new EasySpecProvider()) .build();RequestConfig requestConfig = RequestConfig.custom() .setCookieSpec("easy") .build(); CloseableHttpClient httpclient = HttpClients.custom() .setDefaultCookieSpecRegistry(r) .setDefaultRequestConfig(requestConfig) .build();
// Create a local instance of cookie storeCookieStore cookieStore = new BasicCookieStore();// Populate cookies if neededBasicClientCookie cookie = new BasicClientCookie("name", "value");cookie.setDomain(".mycompany.com");cookie.setPath("/");cookieStore.addCookie(cookie);// Set the storeCloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookieStore) .build();
CloseableHttpClient httpclient = <...>LookupcookieSpecReg = <...>CookieStore cookieStore = <...>HttpClientContext context = HttpClientContext.create();context.setCookieSpecRegistry(cookieSpecReg);context.setCookieStore(cookieStore);HttpGet httpget = new HttpGet("http://somehost/");CloseableHttpResponse response1 = httpclient.execute(httpget, context);<...>// Cookie origin detailsCookieOrigin cookieOrigin = context.getCookieOrigin();// Cookie spec usedCookieSpec cookieSpec = context.getCookieSpec();
转载地址:http://wihgi.baihongyu.com/