如何创建浏览器独立cookie?

day*_*mer 4 javascript cookies

  • 我正在尝试建立一个投票系统,用户可以在不注册网站的情况下进行投票
  • Cookie取决于浏览器,因此如果他们使用不同的浏览器,人们可以多次投票(我想阻止他们这样做)(我不想要任何偏见)
  • 我读过evercookie是我可以使用的东西.我看到的问题是调用似乎是异步的.例如

我做了以下事情

 var ec = new evercookie
 ec.get("id", function(value) { 
        alert("Cookie value is " + value);
        if (value != null) {
           alert('cookie already set, returning');
           return;
        }
        ec.set("id", "12345");
        alert('cookie saved');
 });
Run Code Online (Sandbox Code Playgroud)

当我使用这段代码时,它首先设置cookie,刷新页面然后返回值,所以我按以下顺序看

cookie saved
cookie already set, returning
Run Code Online (Sandbox Code Playgroud)

有人可以帮我设置独立于浏览器的cookie吗?

谢谢

小智 8

你不能只用cookie做到这一点.

Cookie是按浏览器存储(有时甚至是每个模式每个会话),并且在任何情况下,用户都可以随意清除.

现在,evercookie试图通过以多种不同的方式存储数据来实现这一点,希望不是所有这些都被同时清除.然而,这些方法仍然通常局限于给定的浏览器/简档,并且取决于可以使用哪些附加机制.(也可以通过禁用JavaScript,使用调试工具调整[cookie或正在运行]值,或使用非浏览器启动请求来绕过EC.)

无论如何,当使用EC方法时(取决于人口统计学可能取得了有限的成功,但它远非 "防黑"),如果没有设置值,只需设置一个[大]"随机值",并始终发送该值到服务器.(确实没有必要从服务器获取nonce,因为服务器无法验证原始请求是不是"重复",这是一种catch-22.)

快乐的编码.