2013-05-05 480 views
1

是的,不太清楚这是什么样的标题。但我现在有一个随机的想法,我甚至不知道它是否可能,我猜不是,但希望有人可以肯定地告诉我是/否。jQuery JavaScript有没有一种方法来监听cookies的变化

整体问题来自在DOM中监听事件的概念,这让我想到了使用cookie的可能性。知道我的cookie通常在页面加载时存储为变量。我可以将它与它发生变化的事件进行比较。我所拥有的是2个不应该改变的cookie,除非它们被脚本删除。所以我想听听他们,看看他们是否改变,如让用户进入浏览器并以某种方式更改值。如果发生这种情况,我想在此基础上做点什么。

我知道我无法做任何关于它们通过诸如萤火虫或其他控制台的浏览器进行物理更改的任何事情。但是,希望知道

var myCookie = cookie;

在页面加载时,所以如果是可以监控的变化,我可以使用的myCookie来比较它,以确保在页面加载的变量是一样的一个尝试,现在可以使用。

那么,即使是远程可能的?有没有像大多数DOM元素一样监听cookie变化的方法,还是从浏览器级别无法监控的管道梦想和安全问题?

+0

2022年出现了一个socket-cookie,它将完全异步,并且在添加内容时发送内容!为什么你会需要这个,你不知道你是否改变了你的cookies? – adeneo 2013-05-05 21:16:37

+0

它看起来像另一个XY-问题。你为什么需要这个?什么是原始任务? – zerkms 2013-05-05 21:17:20

+0

没错。你为什么要观察cookie?他们不是实时存储,而是在单个机器上的会话中存储信息。我理解你的观点,但是我猜想有一种更好的选择来使用类似这样的cookie ......就像你实际需要它们或离开网站时那样,比较值并相应地做。 – Kiruse 2013-05-05 21:18:54

回答

1

无法知道Cookie在页面生命周期之外何时发生变化。当你的页面没有被加载时,你的页面代码甚至没有运行,因此即使有这样的事件存在,cookie也可以随意改变,你的代码也不会运行以监视这种改变。

可能的替代解决方案,我能想到的是:

  1. 存储数据的服务器端,你控制存储的安全性和安全性。您可能需要登录系统,或者您可以唯一地cookie浏览器(如购物车),以便您知道哪些服务器端数据属于此浏览器。然后,用户从未有机会修改数据,而无需参与。
  2. 将数据存储在多个位置,然后比较每个位置的值。这并不能阻止确定的黑客最终搞清楚你的​​系统,但是这比编辑cookie值要困难得多。例如,您可以将该值存储在几个Cookie中并存储在本地存储中。甚至可以在Flash中存储类似cookie的内容。请注意,这比实际的安全性要逊色得多,但它可能会阻止任何人,但真正确定的黑客。
  3. 加密和校验数据,因此它是不容易的,没有你确定它已经被编辑或无需专人先搞清楚你的​​加密或校验算法进行编辑。再次,这是晦涩的,但它可以防止随意的cookie编辑。

存储服务器上的数据是允许真正的安全是唯一的选择。


如果你只是想看看如果cookie被改变,而你的页面加载,那么你可以简单地在页面加载时间的cookie值装载到一个变量,然后定期与setInterval()轮询的cookie值看看它是否已被修改。或者,如果您只想知道它是否在您的页面的某些执行点已被修改(如提交表单之前),您可以在这些时间点检查当前Cookie值与原始变量。

相关问题