我需要知道 webkit 浏览器中的 cookie 是否为 httpOnly。 使用方法 getCookie(URL) 只返回一个包含 cookie 名称和值的字符串。
我可以很容易地从 java.net.CookieManager 获取它,但我不知道是否可以将 android.webkit.CookieManager 转换为 java.net.CookieManager。
更新 1 我放弃了那样做。我的猜测是我想做的是不可能的。 我试图覆盖 shouldInterceptRequest 方法以使用 HttpUrlConnection 打开一个新连接并返回一个新的 WebResourceResponse 以及从 HttpUrlConnection 返回的 ImputStream 但是,似乎 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 上测试)
关于java - 如何从 android.webkit.CookieManager 获取 httpOnly cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583740/