httpclient對cookie的處理

2021-07-08 11:10:51 字數 1436 閱讀 5514

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 的原因,我豬的。 

這種場景可以解決第一次登入也需要驗證碼的**。沒有登入就沒辦法發布或重新整理資訊。 

如趕集網。

CodeIgniter輔助函式之Cookie的使用

刪除一條 cookie 刪除一條 cookie,只需要傳入 cookie 名即可,也可以設定路徑或其他引數 來刪除特定 cookie。不提供 cookie 的值和 過期時間等引數。第乙個引數也可以是個陣列,包含多個要刪除的 cookie delete cookie name domain path ...

cookie和session區別,cookie禁用

cookie資料存放在瀏覽器上,session資料存放在伺服器上。很多瀏覽器都限制乙個站點最多儲存20個cookie,每個cookie儲存的資料不超過4k cookie並不是很安全,別人可以分析存放在本地的cookie進行cookie欺騙,考慮安全應該用session session在一定時間內儲存...

httpclient 上傳檔案

3.0版本 用multipartrequestentity方式,怎麼搞都不行。最後還是用了multipartpostmethod,才算搞定 總之,不好使啊.具體使用方式如下 2,post.addrequestheader content type multipart form data charse...