结论:安卓 WebView 默认是支持 Cookie 的,但需要在代码中正确配置,否则可能出现 Cookie 不生效或丢失的问题。
下面分几个层面说明:
Android 的 WebView 使用 WebKit / Chromium 内核,和浏览器一样,支持 HTTP Cookie(包括 Session Cookie 和持久化 Cookie)。
WebView 的 Cookie 不是存在 HttpURLConnection 或 OkHttp 的 CookieStore 里,而是存在:
CookieManager(Android WebView)CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true); // 默认就是 true
原因:Android 5.0(API 21)之后,WebView 默认 不共享 Cookie 到第三方存储,需要手动开启。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
}
原因:
HttpOnlySameSite=None; Secure 未正确设置建议:
httpsSet-Cookie: token=xxx; Path=/; HttpOnly; Secure; SameSite=None
CookieManager.getInstance().setCookie(url, "token=xxx");
CookieManager.getInstance().removeAllCookies(null);
CookieManager.getInstance().flush();
| 项目 | 是否支持 |
|---|---|
| WebView 支持 Cookie | ✅ |
| 默认开启 | ✅ |
| 第三方 Cookie | ❌(需手动开) |
| 和 Native 共享 | ❌(需手动同步) |
如果你有 具体场景(比如:登录态丢失 / 微信里能登 WebView 不能 / Hybrid 通信),可以贴代码,我可以帮你精确定位。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。