当我重新启动我的 android 设备 (kindle fire) 或终止应用程序时,浏览器或 WebView“ session ”cookie 似乎没有被删除。这似乎与 Windows 或 MacOS 上浏览器的行为截然不同,如果您终止浏览器应用程序,“ session ”cookie 就会消失。浏览器进程重新启动后,只应保留“持久性”cookie。 澄清一下,这里的'session cookies'的意思是服务器设置的没有有效期的cookie,在响应中使用http header,例如: 设置 Cookie:mycookie=ifmr0846qcsdpeqqkgvuqmc5u7;路径=/ 由于没有指定到期日期,根据我的理解,浏览器通常不会保留那些,让它们保持 Activity 状态直到进程被终止。通常使用此类 cookie 设置 session ID。
我确信这些不会在设备重启或应用程序重启时被删除,因为如果我登录到我的网站,建立 session (使用非持久性/“ session ”cookie 作为 session ID,在这种情况下名为 PHPSESSID) , 然后重新启动设备并打开浏览器或 WebView 到相同的 url,我仍然登录,这意味着浏览器仍然发送相同的 PHPSESSID cookie,该 cookie 在设备重新启动之前由服务器设置。
谁能解释/确认 android WebViews 或浏览器的这种行为?他们如何准确地管理 session 和持久性 cookie?
谢谢。
最佳答案
You are correct, session cookies do not expire automatically in the lifecycle of a WebView. If you are seeing issues with this, you can always clear all of your cookies or overwrite your session cookies explicitly with an empty value.
引用:Lifecycle of a session cookie in an Android WebView / CookieSyncManager
清除 session 使用
CookieManager.getInstance().removeSessionCookie();
CookieManager.getInstance().removeAllCookie();
关于android webview 或浏览器在设备重启时不删除 session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10006334/