簡體   English   中英

如何從android.webkit.CookieManager獲取httpOnly cookie

[英]How to get httpOnly cookies from android.webkit.CookieManager

我需要知道webkit瀏覽器中的cookie是否是httpOnly。 使用方法getCookie(URL)僅返回帶有cookie名稱和值的String。

我可以輕松地從java.net.CookieManager獲取它,但我不知道是否可以將android.webkit.CookieManager轉換為java.net.CookieManager。

更新1我放棄嘗試這樣做。 我的猜測是,我想做的事情是不可能的。 我試圖覆蓋shouldInterceptRequest方法以使用HttpUrlConnection打開一個新連接,並使用從HttpUrlConnection返回的ImputStream返回一個新的WebResourceResponse,但似乎webview在來自shouldInterceptRequest的調用后不接受javascript。 :-(

這可以通過反射來完成,例如:

CookieManager cookieManager = CookieManager.getInstance();

Field mChromeCookieManager = cookieManager.getClass().getDeclaredField("mChromeCookieManager");
mChromeCookieManager.setAccessible(true);

Object awCookieManager = mChromeCookieManager.get(cookieManager);

Method getCookie = awCookieManager.getClass().getDeclaredMethod("nativeGetCookie", String.class);
getCookie.setAccessible(true);

Object cookie = getCookie.invoke(awCookieManager, url);

(在Android 5.1.1上測試過)

要隔離http-cookies,請將document.cookie注入頁面,它應該將所有非http cookie返回給JS接口回調。 然后獲取CookieManager調用的結果。 該集合中的額外cookie很可能是httponly。 簡單的字符串工作或哈希應該可以做到! 適用於Android 6和7。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM