如何在 JavaScript 中唯一地标识访问网站的计算机?

javascriptweb developmentfront end technology

每当我们创建任何应用程序或网站时,我们都需要唯一地标识访问网站的计算机。唯一地标识计算机有很多好处。

例如,您正在为用户提供一些服务。通过唯一地标识计算机,当用户第一次从新设备访问您的网站时,您可以提供免费试用服务。当用户再次访问时,您可以要求用户购买高级版或订阅您的应用程序。

在这里,我们将使用 cookie 来识别访问网站的计算机。

什么是 cookie?

Cookie 允许开发人员将用户信息存储在浏览器中。例如,我们可以从服务器向浏览器发送数据并将其存储在浏览器中。因此,每当用户重新访问网站时,它都会从 cookie 而不是服务器中获取数据。因此,cookie 可以提高应用程序的性能。

在我们的例子中,当用户第一次访问网站时,我们可以将 cookie 的有效期设置为 100 年。此后,每当用户再次访问该网站时,我们都会检查 cookie 是否存在,然后我们可以说用户已重新访问该网站。

语法

用户可以按照以下语法在 Web 浏览器上设置和获取 cookie。

// 设置 cookie
document.cookie = "isVisited=true";

// 获取 cookie
let ca = decryptURIComponent(document.cookie).split(';');

在上述语法中,我们将一个带有键值对的字符串分配给 document.cookie,以将 cookie 设置到浏览器中。要获取 cookie,我们可以简单地使用 document.cookie,它会返回 cookie 数组。

步骤

步骤 1 − 创建 fetchCookies() 函数。

步骤 2 − 在 fetchCookies() 函数中,使用 document.cookie 获取数组格式的 cookie,并使用 decryptURIComponent() 方法解码 cookie。

步骤 3 − 使用 for 循环遍历数组。

步骤 4 − 对于数组的每个元素,从数组开头删除空格。

步骤 5 − 使用 indexOf() 方法检查数组元素是否包含第 0 个索引处的键,并使用 substring() 方法获取键值。

步骤 6 − 返回特定键的值。

步骤 7 - 创建一个 fetchCookies() 函数。在 fetchCookies() 函数中,调用 getCookie() 函数并检查 cookie 是否存在。

步骤 8 - 如果 cookie 为空,则设置 cookie。

步骤 9 - 根据所需的 cookie 是否为空打印消息。

示例

在下面的示例中,每当用户第一次访问网站时,我们都会在 cookie 中将"isValidate"设置为"true"。每当用户第二次访问网站时,我们都会获取 cookie 中的"isValidate",因此我们会打印"欢迎回到网站"之类的消息。

<html>
<body>
   <h3>Using the <i> Cookies </i> to uniquely identify computers visiting web site in JavaScript</h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      
      // 获取 cookie 的函数
      function fetchCookies(cname) {
         let key = cname + "=";
         let ca = decodeURIComponent(document.cookie).split(';');
         for (let i = 0; i < ca.length; i++) {
            let part = ca[i];
            while (part.charAt(0) == ' ') {
               part = part.substring(1);
            }
            if (part.indexOf(key) == 0) {
               return part.substring(key.length, part.length);
            }
         }
         return null;
      }
      
      // 设置 cookie 来唯一标识访问网站的计算机
      function checkCookies() {
         var cookies = fetchCookies("isVisited");
         if (cookies == null) {
            content.innerHTML = "Welcome to the website";
            document.cookie = "isVisited=true";
         } else {
            content.innerHTML = "Welcome back to the website";
         }
      }
      checkCookies();
   </script>
</body>
</html>

示例

在下面的例子中,每当用户第一次访问网站时,我们都会使用提示框询问他们的姓名并显示欢迎消息。此外,我们将 cookie 设置为 100 年有效期。

每当用户第二次访问时,我们都会显示带有他们姓名的欢迎消息,而不会询问他们的姓名。

<html>
<body>
   <h3>Using the <i> Cookies </i> to uniquely identify computers visiting web site in JavaScript</h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      
      // 获取 cookie 的函数
      function fetchCookies(cname) {
         let key = cname + "=";
         let ca = decodeURIComponent(document.cookie).split(';');
         for (let i = 0; i < ca.length; i++) {
            let part = ca[i];
            while (part.charAt(0) == ' ') {
               part = part.substring(1);
            }
            if (part.indexOf(key) == 0) {
               return part.substring(key.length, part.length); 
            }
         }
         return null;
      }
      
      // 设置 cookie 来唯一标识访问网站的计算机
      function checkCookies() {
         var cookies = fetchCookies("customCookie");
         if (cookies == null) {
            let name = prompt("Enter your name", "Shubham");
            document.cookie = "customCookie=" + name + "; expires=Thu, 23 Oct 2120 12:00:00 UTC; path=/";
            content.innerHTML = "How are you " + name + "?";
         }
         else {
            content.innerHTML = "Hey, " + cookies + " You visited our site again!";
         }
      }
      checkCookies();
   </script>
</body>
</html> 

用户学会了使用 JavaScript 中的 cookie 来唯一地识别访问网站的计算机。但是,cookie 有一些限制。如果用户清除 cookie,我们就无法唯一地识别计算机。此外,我们需要将 cookie 的有效期设置为 100 年。此外,如果用户使用不同的浏览器,我们就无法唯一地识别计算机。

解决上述所有问题的最佳解决方案是使用 Google Analytics。


相关文章