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日

相关文章

  • Javascript实现异步编程的过程

    Javascript 是一种单线程语言,它只能同时执行一个任务,当程序执行 I/O 操作、等待网络请求或者等待定时事件时,程序不能阻塞等待,必须异步执行。所以,Javascript 实现异步编程是必备技能。 下面是 Javascript 实现异步编程的过程: 1. 回调函数 回调函数是 Javascript 中异步编程的最基本的方式。回调函数实现方式为,将需…

    JavaScript 2023年6月11日
    00
  • 浅谈Javascript事件对象

    浅谈Javascript事件对象 Javascript 事件机制是Web开发中非常重要的一部分,它让我们可以对用户的操作、浏览器状态、浏览器错误等行为做出响应。在Javascript事件机制中,每一个事件都会生成一个事件对象,这个事件对象记录了事件的发生情况以及相关的数据。本文将由浅入深详细讲解Javascript事件对象。 事件对象概述 事件对象是指在某个…

    JavaScript 2023年5月27日
    00
  • JS表单传值和URL编码转换

    JS表单传值和URL编码转换是前端开发经常遇到的问题,接下来我将详细讲解这个话题的完整攻略。 表单传值 使用JS实现表单传值需要先获取表单元素,再获取元素中的值。下面是一个简单的示例: <!– HTML部分 –> <form id="myForm"> <input type="text&quot…

    JavaScript 2023年5月19日
    00
  • Threejs实现滴滴官网首页地球动画功能

    当我们在研究 Three.js 实现滴滴官网首页的地球动画功能时,需要完成以下步骤: 1. 获取地球模型 我们可以获取已经制作好的地球模型,比如 Three.js 地球模型。 2. 将模型加入场景 使用 Three.js 创建场景,并将得到的地球模型加入到场景中。示例代码: var scene = new THREE.Scene(); var earth =…

    JavaScript 2023年6月11日
    00
  • 在nuxt中使用路由重定向的实例

    下面我将为你讲解在Nuxt中使用路由重定向的实例攻略。 什么是路由重定向? 路由重定向是浏览器在访问某个页面时,将页面地址自动跳转到另一个地址的技术,也叫URL重定向。 在Nuxt中,路由重定向可以通过使用 Nuxt.js 提供的插件实现,其中就包括 @nuxtjs/redirect-module 插件。 安装@nuxtjs/redirect-module插…

    JavaScript 2023年6月11日
    00
  • 原生JavaScript实现拖动校验功能

    这里是原生JavaScript实现拖动校验功能的完整攻略。 1. 准备工作 在实现拖动校验功能之前,需要准备以下几项工作。 1.1 HTML结构 首先,需要在HTML中创建一个<ul>列表,每条列表项包含一个可拖动的元素,如下所示: <ul id="drag-items"> <li class="d…

    JavaScript 2023年6月10日
    00
  • JavaScript中的this基本问题实例小结

    当在JavaScript语言中使用关键字this时,它指向的是当前执行代码的对象。而谁才是当前执行代码的对象,这是本文要探讨的关键问题。 1. 全局上下文中的this 在全局上下文中,this关键字指向的是全局对象。在浏览器中,全局对象是window对象,故在浏览器中,this指向window对象。 console.log(this === window);…

    JavaScript 2023年5月27日
    00
  • JavaScript中字符串的常用操作方法及特殊字符

    当我们在使用JavaScript处理字符串时,有许多常用的操作方法和一些特殊字符需要重点了解。 字符串的常用操作方法 以下是一些常用的字符串操作方法: 1. 获取字符串长度 通过 .length 属性可以获取字符串的长度。 示例代码: const str = "Hello World!"; console.log(str.length);…

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