【发布时间】:2013-06-07 18:18:33
【问题描述】:
我有一个 Android 应用程序,它通过 WebView 和 HttpClient 向我的网络服务器发出请求。我使用 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 同步的 HttpClient 时,似乎没有清除会话 cookie,从而导致奇怪的服务器端行为。
我一直无法在 WebView/CookieSyncManager 中找到有关会话 cookie 生命周期(过期时间=0)的具体文档 - 还有其他人运气更好吗?
【问题讨论】:
-
您的问题和回答对我有帮助,但出于安全考虑,我建议您在服务器端过期 cookie。有人可能会拦截 cookie 值,即使您在客户端将其过期,相同的值也可能被用来劫持会话。另请注意,您应该考虑 ode 用户不受信任,他们可以通过更改您的 apk 甚至使用 Xposed 框架之类的东西来改变这种行为。
标签: android-webview session-cookies activity-lifecycle