博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpClient_HttpClient 对 cookie的处理
阅读量:4983 次
发布时间:2019-06-12

本文共 1294 字,大约阅读时间需要 4 分钟。

session的保持是通过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 的原因,我猪的。 
这种场景可以解决第一次登录也需要验证码的网站。没有登录就没办法发布或刷新信息。 
如赶集网。

转载于:https://www.cnblogs.com/gisblogs/p/4777799.html

你可能感兴趣的文章
hdu2046 骨牌铺方格
查看>>
同心圆闪烁扩散功能
查看>>
自定义连接池
查看>>
应用程序不能全然结束的原因探秘及调试方法
查看>>
单元文件结构
查看>>
DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式
查看>>
Qt学习(14)
查看>>
NOIP2011T2 统计单词数
查看>>
每日5min分享-接口测试框架
查看>>
超好用超短的小程序请求封装
查看>>
PHP 解析Url 面向对象
查看>>
nodejs express route 的用法
查看>>
Python多线程
查看>>
java IO整理-File
查看>>
粗谈Springboot框架,众所周知Springboot是有spring推出的微服务框架,什么是微服务框架呢!...
查看>>
离钱越近,才能赚钱越‘稳’
查看>>
mapping.mapper.xml文件中的标签详解
查看>>
软件工程——理论、方法与实践⑦
查看>>
【转】Android 组件系列-----Activity保存状态
查看>>
批处理实现多线程执行命令列表文件
查看>>