JS中cookie的使用及缺点讲解

什么是cookie

Cookie是存储在客户端浏览器中的小数据片段,它会在HTTP请求和服务器响应之间传递数据。Cookie通常用于记录用户的登录状态、页面访问记录、用户偏好等信息。

JS中如何使用cookie

1. 设置cookie

要设置Cookie,可以使用document.cookie属性。例如:

document.cookie = "username=Tom; expires=Thu, 18 Dec 2022 12:00:00 UTC; path=/";

上面的代码将设置一个名为username,值为Tom的Cookie,并将其有效期设置为2022年12月18日12点整。路径设置为/表示整个网站都可以访问这个Cookie。

2. 获取cookie

获取Cookie的方法是通过访问document.cookie属性来获取当前页面的所有Cookie。例如:

const cookies = document.cookie;
console.log(cookies);

上面的代码将在控制台输出当前页面的所有Cookie信息。

3. 删除cookie

要删除Cookie,只需要将该Cookie的expires属性设为过去的时间即可。例如:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/";

上面的代码将删除名为username的Cookie。

cookie的缺点

Cookie虽然在很多场景下非常有用,但是它也有以下一些缺点:

  1. Cookie存储的数据量有限,通常只能存储4KB左右的数据。
  2. Cookie存储在客户端,容易被用户篡改,从而导致安全问题。
  3. 因为Cookie被包含在HTTP请求头中,所以对于每一个页面请求都会带上Cookie。如果Cookie数据较大,会导致每个请求的数据量增加,从而降低性能。
  4. Cookie不能跨域使用,也就是说,不同域名下的网页不能共享Cookie。这对于一些需要跨域传递数据的应用场景来说会产生限制。

示例1

在下面的例子中,用户点击一次按钮之后,网站将设置一个名为visited,值为true的Cookie,并将其有效期设置为1个月。当用户再次访问网站的时候,如果Cookie存在,则会提示用户之前访问过该网站。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>示例1</title>
</head>
<body>
  <button id="btn">访问网站</button>
  <script>
    function setCookie(name, value, expires) {
      const date = new Date();
      date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);
      document.cookie = `${name}=${value};expires=${date.toUTCString()};path=/`;
    }

    function getCookie(name) {
      const cookies = document.cookie.split(';');
      for (let i = 0; i < cookies.length; i++) {
        const cookie = cookies[i].trim();
        if (cookie.startsWith(`${name}=`)) {
          return cookie.substring(`${name}=`.length, cookie.length);
        }
      }
    }

    const visited = getCookie('visited');
    if (visited === 'true') {
      alert('你之前已经访问过该网站了!');
    }

    document.getElementById('btn').addEventListener('click', function() {
      setCookie('visited', 'true', 30 /* 有效期一个月 */)
    });
  </script>
</body>
</html>

示例2

在下面的例子中,用户可以自定义一个文本框的颜色,并将其保存到Cookie中。每次用户再次访问该网站时,网站都会从Cookie中读取上次保存的颜色,并将文本框的颜色设置为该颜色。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>示例2</title>
</head>
<body>
  <input type="text" id="input" placeholder="在这里输入文本内容">
  <div id="message"></div>
  <script>
    function setCookie(name, value) {
      document.cookie = `${name}=${value};path=/`;
    }

    function getCookie(name) {
      const cookies = document.cookie.split(';');
      for (let i = 0; i < cookies.length; i++) {
        const cookie = cookies[i].trim();
        if (cookie.startsWith(`${name}=`)) {
          return cookie.substring(`${name}=`.length, cookie.length);
        }
      }
      return '';
    }

    const color = getCookie('color');
    if (color !== '') {
      document.querySelector('#input').style.backgroundColor = color;
    }

    document.querySelector('#input').addEventListener('blur', function() {
      const color = this.value;
      this.style.backgroundColor = color;
      setCookie('color', color);
      document.querySelector('#message').innerHTML = `已成功将文本框的颜色设置为${color}`;
    });
  </script>
</body>
</html>

在上面的例子中,用户可以在输入框中输入任意颜色。当用户重新访问网站时,网站将从Cookie中读取之前保存的颜色,将文本框的颜色设置为该颜色。如果用户没有保存过颜色,则文本框将以默认的白色背景显示。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中cookie的使用及缺点讲解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 利用jquery的获取JS文件中的字符串内容

    获取 JS 文件中的字符串内容,可以使用 jQuery 的 AJAX 功能来实现。具体步骤如下: 使用 $.get() 或 $.ajax() 函数向指定的 JS 文件发送 HTTP 请求,获取文件内容。 示例1: $.get(‘script.js’, function(data) { console.log(data); }); 在这个示例中,我们使用 $.…

    JavaScript 2023年5月27日
    00
  • JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具

    作为一个网站作者,可使用以下步骤进行JavaScript(JS)压缩/混淆/格式化批处理,以加强效率和文件安全性。 第一步:安装Node.js Node.js是一个基于Chrome JavaScript运行时建立的平台,可运行在多个操作系统上,并具有事件驱动、非阻塞I/O的特点。我们需要使用Node.js环境运行JS压缩/混淆/格式化工具。 在官网下载地址中…

    JavaScript 2023年5月19日
    00
  • 详解JavaScript表单验证(E-mail 验证)

    详解JavaScript表单验证(E-mail 验证) 在实现表单验证时,E-mail 验证是一个必不可少的步骤。在本文中,我们将会介绍如何使用 JavaScript 进行 E-mail 验证,以确保用户输入的 E-mail 地址格式正确。 步骤一:获取用户输入的 E-mail 地址 在 JavaScript 中获取用户输入的 E-mail 地址可以使用 g…

    JavaScript 2023年6月10日
    00
  • 谈谈JavaScript中的垃圾回收机制

    当浏览器执行JavaScript代码时,浏览器会在内存中分配空间来存储变量、函数、对象等数据。由于JavaScript是一种动态类型的语言,因此变量类型和值的大小在运行时是不确定的,这就需要在内存中动态分配和释放空间。为了确保内存得到充分的利用,在一些不再使用的数据处理完后,我们需要将其从内存中释放掉。这就是JavaScript中的垃圾回收机制。 垃圾回收算…

    JavaScript 2023年6月10日
    00
  • 解决ie img标签内存泄漏的问题

    解决IE浏览器中img标签内存泄漏问题,需要遵循以下三个步骤: 1. 使用JavaScript动态创建img元素 在IE浏览器中,使用img标签将图片插入到HTML文档中时,需要先在浏览器缓存中将图片缓存下来,而当img被移除时,缓存并不会被自动清除,会导致内存泄漏。 来自IBM的一篇文章提出了使用JavaScript动态创建img元素的方案,可以避免该问题…

    JavaScript 2023年6月10日
    00
  • js中延迟加载和预加载的具体使用

    下面我将详细讲解JS中延迟加载和预加载的使用攻略。 一、什么是延迟加载和预加载 1. 延迟加载 延迟加载(Lazy Load)是指在页面加载完成后,对于一些非必要的资源如图片、视频等等,先不进行加载,待页面滚动或者用户发生某些操作时再加载。这样可以让页面加载更快,提高用户的体验感。 2. 预加载 预加载(Preload)是指在页面正式加载之前,将一些可能需要…

    JavaScript 2023年5月27日
    00
  • JavaScript代码优雅,简洁的编写技巧总结

    那么现在我将分享“JavaScript代码优雅,简洁的编写技巧总结”的攻略。 减少嵌套 嵌套层数过多的代码通常会让代码难以阅读和理解。因此,我们可以通过减少嵌套来提高代码的可读性和可维护性。 比较嵌套版本: function calculateTotal(users) { var total = 0; for (var i = 0; i < users…

    JavaScript 2023年5月18日
    00
  • 详解javaScript中Number数字类型的使用

    详解JavaScript中Number数字类型的使用 在JavaScript中,Number数字类型表示数字。在本文中,我们将详细讨论JavaScript中的Number数字类型,包括Number的类型、创建Number变量的方法、数字类型的方法和常见问题以及示例说明。 Number类型和创建Number变量的方法 在JavaScript中,Number是一…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部