[英]Android Webkit CookieManager: How to get all cookies via CookieManager?
[英]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.