android webview或浏览器不会在设备重启时删除会话cookie

Posted

技术标签:

【中文标题】android webview或浏览器不会在设备重启时删除会话cookie【英文标题】:android webview or browser not deleting session cookies on device reboot 【发布时间】:2012-04-17 21:05:11 【问题描述】:

当我重新启动我的 android 设备(kindle fire)或终止应用程序时,浏览器或 WebView 的“会话”cookie 似乎没有被删除。这似乎与 Windows 或 MacOS 上的浏览​​器行为完全不同,如果您终止浏览器应用程序,“会话”cookie 就会消失。浏览器进程重新启动后,仅应保留“持久”cookie。 澄清一下,这里的“会话cookie”的含义是服务器设置的没有过期日期的cookie,在响应中使用http头,例如: 设置 Cookie:mycookie=ifmr0846qcsdpeqqkgvuqmc5u7;路径=/ 由于没有指定到期日期,根据我的理解,浏览器通常不会保留这些,让它们保持活动状态直到进程被终止。通常会话 ID 是使用这种类型的 cookie 设置的。

我确信这些不会在设备重启或应用重启时被删除,因为如果我登录到我的网站,建立一个会话(使用非持久性/“会话”cookie 作为会话 ID,在这种情况下名为 phpSESSID) ,然后重新启动设备并打开浏览器或 WebView 到相同的 url,我仍然登录,这对我来说意味着浏览器仍然发送了服务器在设备重新启动之前设置的相同 PHPSESSID cookie。

谁能解释/确认 android WebViews 或浏览器的这种行为?他们如何准确地管理会话和持久性 cookie?

谢谢。

【问题讨论】:

【参考方案1】:

您是对的,会话 cookie 不会在 WebView 的生命周期。如果您发现此问题,您可以 始终清除所有 cookie 或覆盖会话 cookie 显式地使用空值。

参考:Lifecycle of a session cookie in an Android WebView / CookieSyncManager

清除会话使用

CookieManager.getInstance().removeSessionCookie();
CookieManager.getInstance().removeAllCookie();

【讨论】:

以上是关于android webview或浏览器不会在设备重启时删除会话cookie的主要内容,如果未能解决你的问题,请参考以下文章

上次更新Android System Webview后,代理设置停止工作

在 android 设备上渲染 webview 与来自同一个父级的先前兄弟级重叠

Instagram WebView 阻止 FB 登录

Android Rotation 重定向到 webview 的根 URL

Facebook Like 按钮的 Android WebView

WebView 在某些 Android 设备上不加载图像或 css