首页 > 其他分享 >浏览器中localStroage、sessionStorage、cookie的区别与使用

浏览器中localStroage、sessionStorage、cookie的区别与使用

时间:2024-04-05 14:30:50浏览次数:16  
标签:存储 localStroage sessionStorage 用户 cookie Cookie message

特性localStoragesessionStorageCookieSession
存储位置浏览器本地浏览器本地浏览器本地服务器
数据传输不自动发送不自动发送自动发送ID自动发送
存储类型键值对键值对文本多种类型(任意)
存储大小通常约5MB通常约5MB通常≤4KB无硬性限制
生命周期持久化存储关闭窗口/标签页后清除可设置有效期依赖服务器配置
跨窗口共享同源窗口间共享不跨窗口共享同源窗口间共享根据ID共享
安全性较低(易被用户访问)较低(易被用户访问)中等(可加密)较高(服务器端)

一、localStorage

常用场景:

需要持久化存储的数据。例如用户的一些主体、字体设置,登录的token,访问的历史记录,需要离线缓存的数据。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 存储数据到sessionStorage
      sessionStorage.setItem("键名", "存储的值");
      // 获取sessionStorage中的数据
      let sessionMessage = sessionStorage.getItem("键名");
      console.log(sessionMessage); //存储的值

      //存储对象需要转换为字符串
      let message = {
        name: "张三",
        age: 18,
      };
      sessionStorage.setItem("message", JSON.stringify(message));
      //取出对象
      let obj = JSON.parse(sessionStorage.getItem("message"));

      // 删除sessionStorage中的特定数据
      sessionStorage.removeItem("message");

      // 清空所有sessionStorage数据
      sessionStorage.clear();
    </script>
  </body>
</html>

二、sessionStorage

常用场景:

只有当前会话需要使用的数据。例如一个按钮的点击次数。

   <script>
      // 存储数据到sessionStorage
      sessionStorage.setItem("键名", "存储的值");
      // 获取sessionStorage中的数据
      let sessionMessage = sessionStorage.getItem("键名");
      console.log(sessionMessage); //存储的值

      // 存储对象到sessionStorage
      let message = {
        name: "张三",
        age: 18,
      };
      sessionStorage.setItem("message", JSON.stringify(message));
      // 获取sessionStorage中的对象
      let newSessionMessage = JSON.parse(sessionStorage.getItem("message"));

      // 删除sessionStorage中的特定数据
      sessionStorage.removeItem("message");

      // 清空所有sessionStorage数据
      sessionStorage.clear();
    </script>

三、cookie

Cookie 的常用场景:

  1. 保存用户登录状态:当用户成功登录后,服务器可以设置一个包含用户ID或其他身份验证信息的cookie。下次用户访问同一网站时,浏览器会自动携带这个cookie,服务器通过读取cookie就能识别用户已登录,从而避免用户反复输入账号密码。

  2. 持久化用户设置

  3. 跟踪用户行为:网站分析工具可以利用cookie记录用户的访问路径、停留时间等信息,以便优化网站设计和营销策略。

  4. 搜索引擎和广告定向:搜索引擎和在线广告服务可能会使用cookie追踪用户的搜索历史和兴趣点,以此来提供个性化的搜索结果或展示相关广告。

Cookie的注意事项:

  1. 输出控制:设置cookie前不能有任何HTTP响应头部之外的数据输出,包括HTML、空白字符等,否则可能导致cookie设置失败。

  2. 初始化与获取:设置cookie后,在当前页面刷新前,$_COOKIE数组可能不会立即更新,需要在新的页面请求中才能获取到新设置的cookie值。

  3. 大小和数量限制:单个cookie大小通常限制在4KB左右,并且单个域下的cookie总数量有限制,一般为300个左右,各个浏览器的具体限制可能不同。

  4. 特殊字符限制:Cookie的键名和值应避免使用分号(;)、逗号(,)、等号(=)以及空格等特殊字符,因为它们在cookie格式中有特殊含义。

  5. 安全性:因为cookie存储在客户端,敏感信息(如密码)不应明文存储在cookie中。如果需要存储敏感信息,应加密处理,并结合HTTPS等安全协议传输。

  6. 有效期:应合理设置cookie的失效时间(Expires/Max-Age),以确保用户隐私和数据有效性。

  7. 跨域问题:cookie遵循同源策略,不能跨域名共享,除非设置了正确的domain属性。

  8. 用户设置:用户可以自行禁用浏览器的cookie功能,或者设置隐私模式阻止cookie的存储,开发者应考虑到这一情况并提供备选方案。

  9. 隐私保护:根据GDPR等法规要求,网站在使用cookie时需告知用户并获得用户同意,特别是涉及个人数据处理的情况。

    <script>
      // 设置一个名为 "username",值为 "老王" 的Cookie,有效期为7天
      function setCookie(name, value, days) {
        var expires = "";
        if (days) {
          var date = new Date();
          date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
          expires = "; expires=" + date.toUTCString();
        }
        document.cookie = name + "=" + (value || "") + expires + "; path=/";
      }

      // 使用函数创建Cookie
      setCookie("username", "老王", 7);

      // 读取Cookie
      function getCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(";");
        for (var i = 0; i < ca.length; i++) {
          var c = ca[i];
          while (c.charAt(0) == " ") c = c.substring(1, c.length);
          if (c.indexOf(nameEQ) == 0)
            return c.substring(nameEQ.length, c.length);
        }
        return null;
      }
      // 使用函数读取Cookie
      var username = getCookie("username");
      console.log(username); // 老王

      // 删除Cookie
      function eraseCookie(name) {
        setCookie(name, "", -1); // 将过期时间设置为过去
      }
      // 使用函数删除Cookie
      eraseCookie("username");
    </script>

标签:存储,localStroage,sessionStorage,用户,cookie,Cookie,message
From: https://blog.csdn.net/qq_45820271/article/details/137385714

相关文章

  • 12、selenium框架之Cookie操作
    一、查看浏览器cookiecookie、session、token的区别:cookie存储在浏览器本地客户端,发送的请求携带cookie时可以实现登录操作。session存放在服务器。token应用于应用程序。F12查看浏览器cookie:二、cookie基本操作1、获取cookie:fromseleniumimportwebdriverfromsele......
  • 在Express中使用Cookie和Session
    在Express中使用Cookie和Session 如果想要通过NodeJS使用cookie,那么你需要安装"cookie-parser"包,如果是session那么需要安装"cookie-session"安装方法:npminstallcookie-parser-Snpminstallcookie-session-S然后在服务端引用varcookieParser=require('cookie-p......
  • 多个标签页之间 Cookie、sessionStorage 共享吗
    Cookie多个标签页之间对于同一域名下的Cookie通常是共享的。当您在一个网页上设置了一个Cookie,并且没有特别指定Cookie的作用域,那么在同一域名下的其他打开的标签页都可以访问到这个Cookie。这是因为Cookie是基于域名和路径来管理的,而不区分具体的浏览器标签页。例如,如......
  • 请解释一下Cookie劫持是什么,以及如何防止?
    首先,我们来了解一下什么是Cookie。Cookie就像是我们放在网上的一个小标记,它可以帮助网站记住我们的一些信息,比如我们的用户名或者我们喜欢的东西。这样,当我们下次再去那个网站的时候,网站就可以通过这个小标记来认出我们,并为我们提供更好的服务。但是,有时候坏人会想办法偷走我......
  • 通过WebView2获取HTTP-only cookie
    通过WebView2获取HTTP-onlycookie可以使用`WebView2.CookieManager`类的方法。以下是一个示例代码,演示如何获取HTTP-onlycookie:usingSystem;usingMicrosoft.Web.WebView2.Core;usingMicrosoft.Web.WebView2.WinForms;namespaceWebView2Example{classProgram{stat......
  • yii2-Cookie
    yii2Cookie读取Cookies$cookies=Yii::$app->request->cookies;//获取名为"language"cookie的值,如果不存在,返回默认值"en"$language=$cookies->getValue('language','en');//另一种方式获取名为"language"cookie的值i......
  • Cookie和Session
    Cookie和Session1.Cookie和Session介绍1.1Cookie服务器保存在客户端浏览器上的信息都可以称之为cookie指代服务端让客户端保存的数据(存储在客户端上与用户信息相关的数据)它的表现形式一般都是k:v键值对(可以有多个)1.2Session保存在服务器上的信息都可以称之为sessi......
  • Django框架之Cookie和Session
    【一】Cookie与Session介绍【1】早期的网站早期的很多网站可能都没有保存用户功能的需求,所有用户访问的返回结果都是一样的,如新闻,博客文章等等...但是互联网发展至今,已经有绝大多数网站,在你登录后反馈的页面和不登录反馈的页面已经是不一样的了,这些网站就用到了保存用户登录信......
  • Cookie复用的妙用:数据处理中的高效利器!
    简介浏览网站时,服务器会往浏览器发一些数据,叫做Cookie。它是一种认证数据,存储在电脑浏览器上,用于后续访问时身份验证和记录登录信息。通常,服务器会把一些关键信息如用户ID,会话ID,密码等存在Cookie里。Cookie相当于个人信息,浏览器请求页面时携带Cookie,这样服务器就能通过......
  • Django cookie与session,CBV如何添加装饰器
    cookie与session简介会话跟踪技术什么是会话跟踪?我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应。例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了。从双方接通电话那一刻起,会话就开始了,到某......