gpt4 book ai didi

javascript - 自动设置 cookie 值

转载 作者:行者123 更新时间:2023-12-02 20:08:48 25 4
gpt4 key购买 nike

我面临着一个关于浏览器 cookie 值的非常奇怪的问题。我正在使用 IE8,我希望以这样的方式管理 session :当任何新用户尝试连接我的应用程序时,前一个实例应该自动关闭。

为此,我每次都会为每个用户的登录尝试设置 cookie 并递增。现在这个场景在 IE6 中完美运行,但在 IE8 中我遇到了问题:当用户第一次登录时,cookie值设置为ex 1。现在我打开另一个IE8窗口并使用cookie值2再次登录。现在,当我转到上一个实例时,cookie值也更改为2(应该是1 个)。

因此应用程序的多个实例正在运行,这是不应该发生的。此外,当我从 1 个实例注销时,另一个实例也会自动注销。无论如何,我一次只需要一个实例。(此方案在不同的浏览器(即 FF 和 IE)中完美运行,即在 IE/FF 中打开第一个实例,在 FF/IE 中打开第二个实例)。

最佳答案

原因是 IE 的两个实例都将 cookie 写入同一位置(cookie 只是硬盘驱动器上的文件)。虽然您的 Web 应用程序看起来像是两个不同的客户端,但从前端来看,当您从第二个窗口登录时,保存的 cookie 会覆盖之前的 cookie。现在,第一个实例只是看到新的 cookie 并将其愉快地发送到服务器。如果您手动编辑 cookie 文件,也会发生同样的情况。这不是一个错误——cookie 应该是这样工作的。请注意,如果您使用不同的计算机,您的预期行为将会显示。

要防止来自同一台计算机和同一应用程序的多个同时 session ,您可以使用不同的技术。例如,在客户端登录时,对登录时间戳进行哈希处理,并将此哈希值保存到用户帐户中。然后将此哈希值发送到每个页面,并让浏览器在请求新页面时将此哈希值发送回给您。在服务器上,将从客户端接收到的哈希值与针对用户帐户存储的哈希值进行比较。如果它们不匹配,那么您将在此窗口中注销该应用程序,因为显然已在另一个窗口中进行了另一次登录。这将适用于同一应用程序的多个选项卡/窗口,也适用于不同的窗口/计算机。我过去曾使用过这种技术。当然,它并不是完全万无一失的(没有什么是万无一失的),但它在我需要的所有情况下都有效。

关于javascript - 自动设置 cookie 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7161131/

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