我有一个Android应用程序,它通过WebView和HttpClient向我的Web服务器发出请求。我使用CookieSyncManager在两者之间同步cookie。到现在为止还挺好。
当我的应用程序启动时(在onResume()内),我运行一个类似于以下内容的逻辑:
if ( appHasBeenIdleFor30Minutes() ) {
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeSessionCookie();
CookieSyncManager.getInstance().sync();
}
这会正确地重置从用户上一个会话中设置的任何会话cookie。我的问题是:这种行为是否会定期发生?这个问题(android webview or browser not deleting session cookies on device reboot)似乎表明它没有。当我通过服务使用cookie-sync'd HttpClient时,似乎没有清除会话cookie,从而导致服务器端的奇怪行为。
我一直无法在WebView / CookieSyncManager中找到关于会话cookie生命周期(到期时间= 0)的具体文档 - 还有其他人有更多运气吗?
答案 0 :(得分:13)
我直接收到了Google工程师的回复,他确认了我的怀疑:
你是对的,会话cookie不会自动失效 WebView的生命周期。 如果您发现此问题,您可以随时清除所有问题 Cookie或使用空值显式覆盖会话Cookie。
您建议的代码看起来像是一个很好的解决方法,请注意 使用CookieSyncManager的cookie同步不同步 - 执行startSync(),stopSync()和sync()命令 在后台线程中异步。
TL; DR - 会话cookie在WebView关闭时不会过期,您必须自己管理。