JS中cookie的使用及缺点讲解

yizhihongxing

什么是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日

相关文章

  • Javascript代码混淆综合解决方案-Javascript在线混淆器

    JavaScript代码混淆指的是将源代码中的变量、函数名、字符串等易于理解的符号转换为难以理解的符号,以保护程序源代码不被盗用、篡改或者窃取重要信息。 JavaScript在线混淆器是一款基于浏览器的JavaScript代码混淆工具,可以在线对源代码进行混淆操作,能够有效提高JavaScript代码的安全性。下面将为您介绍Javascript代码混淆综合解…

    JavaScript 2023年5月20日
    00
  • javascript时间自动刷新实现原理与步骤

    JavaScript 时间自动刷新实现主要是通过不断更新页面上显示的日期和时间来实现,其实现步骤主要包括以下几步: 创建用于显示时间的 HTML 元素。可以使用 p 或 span 等标签,例如: <p id="time"></p> 创建用于更新时间的 JavaScript 函数。该函数需要通过定时器来不断更新时间,…

    JavaScript 2023年5月27日
    00
  • .net使用自定义类属性实例

    关于“.Net使用自定义类属性实例”的完整攻略,可以分为以下几个部分进行讲解: 创建自定义类属性 在C#中,我们可以通过编写自定义类属性来实现我们的自定义需求。自定义类属性就是在编译时解析的,在程序运行期间会根据使用情况评估和访问属性。在此我们给出一个简单的自定义类属性的例子来说明: [AttributeUsage(AttributeTargets.All)…

    JavaScript 2023年6月10日
    00
  • JavaScript 正则表达式解析

    JavaScript 正则表达式是一种用于模式匹配的功能强大工具。正则表达式由一个或多个字符组成,用于描述文本中的模式并执行匹配操作。本文将为你提供一份完整攻略,以帮助你更深入了解 JavaScript 正则表达式。 什么是正则表达式 正则表达式是一种描述文本模式的语言。它们可以用于搜索、替换和验证字符串。在 JavaScript 中,正则表达式是一种对象类…

    JavaScript 2023年5月28日
    00
  • HTML5 script元素async、defer异步加载使用介绍

    接下来我将为你详细讲解一下“HTML5 script元素async、defer异步加载使用介绍”的完整攻略。 什么是async、defer异步加载 在HTML5中,script标签有两个属性可以实现异步加载,分别是async和defer。 async属性定义了脚本是否异步加载,异步加载的脚本不会阻塞页面的加载。 defer属性定义了脚本是否延迟执行,延迟执行…

    JavaScript 2023年5月27日
    00
  • javascript:history.go()和History.back()的区别及应用

    下面是“javascript:history.go()和History.back()的区别及应用”的完整攻略。 什么是history.go()和history.back()? history.go()和history.back()是JavaScript中操作浏览器历史记录的方法,它们都属于浏览器对象的一部分,即window.history对象。其中,hist…

    JavaScript 2023年6月11日
    00
  • JavaScript中instanceof运算符的用法总结

    标题:JavaScript中instanceof运算符的用法总结 1. 简介 在JavaScript中,instanceof是一种语法特性,用于检查一个实例是否属于某个类或原型链中的某一级原型对象。该运算符通常被用来判断变量类型、判断是否为某个类的实例等。 2. 语法 instanceof 运算符的语法如下: object instanceof constr…

    JavaScript 2023年6月10日
    00
  • Javascript数组循环遍历之forEach详解

    Javascript数组循环遍历之forEach详解 foreEach()方法的基本使用 JavaScript中的数组可以使用forEach()方法进行遍历,forEach()方法接收一个函数作为参数,该函数将在数组中的每个元素上运行,基本语法如下: array.forEach(function(currentValue, index, arr), this…

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