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 的緣由,我豬的。 這種場景能夠解決第一次登陸也須要驗證碼的網站。沒有登陸就沒辦法發佈或刷新信息。 如趕集網。