我最近发现,如果有人在Chrome中检查“继续我离开的地方”,那么浏览器重启之间会持续存在Cookie和sessionStorage。此外,一些线程谈论即使关闭浏览器后Chrome后台进程仍保持打开状态。而来自Stackoverflow和许多其他网站的线程之后的线程有许多人问同样的问题,但没有人真正发布问题的真正解决方案。 Chrome not clearing SESSION COOKIES on close/exit
我想也许我可以检测到它们关闭窗口/标签,但这也不起作用:javascript detect browser close tab/close browser
我在Chrome中检查了这个问题,发现有人已经报告过,发现他们没有计划解决这个问题:https://bugs.chromium.org/p/chromium/issues/detail?id=128513
另见:Chrome doesn't delete session cookies
如果选中“继续我离开的地方”并且我不能期望最终用户更改该设置,则在javascript中使用sessionStorage也会在关闭选项卡和窗口之间保持不变。
互联网仍在继续,所以我想知道解决这个问题的方法是什么?
我读过的一篇文章说他们开始将Cookie的到期日期设置为1小时:http://erlycoder.com/111/google-chrome-session-cookie-expiration-issue-feature-your-personal-data-is-insecure-now-
当然,我可以在Cookie上设置过期日期,但即使我将值设置为“1小时”,如果用户关闭标签并在一小时内重新打开,则会出现问题。
建议?
答案 0 :(得分:0)
从stackoverflow上的其他帖子中获取以及关于重新运行应用程序的问题的评论,我在1小时后将一些帖子结合起来清除cookie和会话变量。
信用:
{{3}}
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 3600)) {
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
}
session_unset();
session_destroy();
echo '<script>window.location= "login.php?pre_action=session_expired";</script>';
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp