我正在本地主机上开发一个应用程序,使用:
谷歌浏览器33.0.1750.154米
XAMPP版本1.8.3
我已经使用这些有一段时间了,今天突然 Chrome 无法清除
session cookies
当我关闭浏览器(所有窗口)时,即使在我重新启动计算机后,session cookies
仍然是上次会话时设置的.
我的页面顶部有此代码:
<?php
session_start();
if(!isset($_SESSION['userID']))
{
echo "<script>alert('Username does not exist')</script>";
echo '<script type="text/javascript"> window.location="login.html";</script>';
exit(1);
}
?>
效果很好,在浏览器关闭后将我重定向到登录页面,直到几个小时前。
注意:
测试了 IE10、IE11 和 FF,它们没有表现出相同的行为,它们正在按预期清除
session cookies
。
我也证实了
从上次停下的地方继续...
设置未选中。
感谢 KevinB 为我指明了正确的方向。
事实证明这不是我想的那样的 cookie 设置,我最终保留了该设置:
允许设置本地数据(推荐)
我记得
最终解决此问题的是取消选中:
Google Chrome 关闭时继续运行后台应用程序
在SYSTEM部分下进行设置。
希望这有助于缓解一些头痛......
“继续运行后台应用程序”选项可能有效,但我们不能期望用户(客户端)使用 Chrome 网络浏览器执行此操作。 我的解决方案如下: 他们单击“注销”按钮 - 这会将他们带到一个纯 PHP(无 html 代码)脚本页面:
<?php
session_start();
$_SESSION=array();
$cookie_parameters=session_get_cookie_params();
setcookie(session_name(),'',time() -86400,$cookie_parameters['path'],
$cookie_parameters['domain'],$cookie_parameters['secure'],$cookie_parameters['httponly']);
session_destroy();
header('Location: logout_exit.php');
?>
代码的“标题”部分将它们(立即)带到页面“logout_exit.php”(您可以随意命名页面,并且可以使用 .html 扩展名而不是 .php) 这个页面是纯 html(没有 php!)。此时,如果您在 Chrome 中查找 cookie,您会发现您的 cookie 仍然存在!但点击下图:
神奇之处在于在 logout_exit.php 页面(在 html 代码的标头部分)中包含一个元标记:
<meta http-equiv="refresh" content="30">
强制浏览器自动刷新(30 = 30 秒,但选择您想要的任何值)。刷新后,如果您现在查看 Chrome,它会显示“Cookies (0 in use)”,如果您单击该消息,您会发现 cookie 确实已被清除。
解决方案
chrome://settings/content/siteData
Delete data sites have saved to your device when you close all windows
Allowed to save data on your device
您可以通过以下方式手动清除cookie:
击中
Ctl-Shift-Delete
Cookies and other site data
Time range
All time
选项单击Clear data