gpt4 book ai didi

javascript - 通过 JS 清除 cookie,但 PHP 仍然检测到它

转载 作者:行者123 更新时间:2023-12-03 00:57:29 24 4
gpt4 key购买 nike

我正在通过 JS 设置“SESSION”cookie:

var d = new Date();
d.setTime(d.getTime() + (2*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cookie.name + "=" + cookie.value +";"+ expires + ";
path="+cookie.path+";domain="+data.shared_domain+";";

然后我通过 JS 使其过期来删除 cookie:

document.cookie = "SESSION=; expires=Thu, 01 Jan 1971 00:00:01 UTC; path=/;domain="+domain;

完成此操作后,console.log(document.cookie) 将返回除此之外的所有其他 cookie,这正是我所期望的。

另一方面,我正在通过 PHP 进行 session 检查,尝试通过执行 $_COOKIE["SESSION"] 来读取 cookie。

isset($_COOKIE["SESSION"]) 将返回 true,我可以读取 cookie 的旧值。无论我刷新页面多少次,它仍然会读取它。

我是否误解了 cookie 的工作原理? PHP 中是否有另一种方法来检查 cookie 是否已过期?

更新:是的,问题是 cookie 有一个 HttpOnly 标志。

所以现在我尝试通过 PHP 删除它。基于此其他question ,我愿意:

setcookie("SESSION", "", time()-3600);
if (isset($_COOKIE['SESSION'])) unset($_COOKIE['SESSION']);

完成后,我通过快速var_dump($_COOKIE)检查它是否已经消失,是的,它已经无处可见。

只不过 Chrome 仍然可以看到它(已于 1969 年过期),并且当我导航到网站的其他部分时,检查该 cookie 将返回一个值。

我将添加一条额外的信息,以防产生影响:此 cookie 由 sub.domain.com 和 app.sub.domain.com 共享。当我设置它时,我将其设置为.domain.com。我也取消了 .domain.com 的设置。

我怎样才能永久删除该 cookie?

最佳答案

目前还不清楚您是如何创建 cookie 的;我假设使用 PHP 的 session 处理程序,但您没有指定。

无论哪种方式,它都可能是通过 cookie 安全设置生成的,这些设置限制了 JavaScript 对其的访问。此设置称为 httpOnly,通常用于 session Cookie 和其他类似的 Cookie 数据,这些数据仅供服务器端代码使用。

如果已设置此 cookie(并且任何好的 session 处理程序都会设置它),那么您将无法从浏览器设置或取消设置此 cookie;您必须通过 PHP 代码来完成此操作。

有关此主题的更多信息,请参阅此维基百科文章:https://en.wikipedia.org/wiki/Secure_cookie

关于javascript - 通过 JS 清除 cookie,但 PHP 仍然检测到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52763495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com