ession的保持是经过cookie来维持的,因此若是用户有勾选X天内免登陆,这个session 就X天内一直有效,就是经过这个cookie来维护。若是没选X天内免登陆,基本上就本次才能保持session,下次打开浏览器就要从新登陆了。 因此在web安全里,黑客经过XSS,最终目的就是获取cookie,从免登陆直接进入系统。 此次要讲的是,获得用户cookie后,免登陆,用HttpClient 保持原来session访问本来必定要登陆才能作的事。 HttpClient 4.x 库能够本身处理Cookie 有两咱广度能够添加cookie, 1.经过 httpclient.setCookieStore(cookieStore) 2.经过 httpGet 或者 httpPost 的addHeader(new BasicHeader("Cookie",cookie)); 第一种, HttpClient是否在下次请求中携带从服务器端请求来的Cookie,彻底是由设置决定的。 httpclient.getParams.setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BEST_MATCH) 或者 CookiePolicy.BROWSER_COMPATIBILITY 若是设置为Cookie策略为BEST_MATCH,或BROWSER_COMPATIBILITY的话,HttpClient会在请求中携带由服务器返回的Cookie。若是不设置,应该须要手动添加了CookieStore,才会保持sesson. 若是设置为Cookie策略为默认的话,没设置,则须要手动经过 httpclient.setCookieStore(cookieStore); 去设置. 注:若是用的是同一个HttpClient(上下两个请求用同一个httpclient对象。 且没去手动链接放掉client.getConnectionManager().shutdown(); )! 都不用去设置cookie的ClientPNames.COOKIE_POLICY。httpclient都是会保留cookie的! 第二种, 经过Header去设置cookie,这种方法,就是今天要用的应用场景, 咱们获得一个登陆的cookie,免登陆访问。 能够用浏览器登陆,而后f12经过console 执行 document.cookie 获得cookie, 用这个cookie ,在访问时,设置 httpGet 或者 httpPost 的addHeader(new BasicHeader("Cookie",cookie));就能够免登陆访问。 这种场景我用来用第一种方法,设置没成功,多是由于用第一种时,没设置path,domain,expire 的缘由,我猪的。 这种场景能够解决第一次登陆也须要验证码的网站。没有登陆就没办法发布或刷新信息。 如赶集网。