首页 > 其他分享 >localStorage、sessionStorage、Cookie的区别以及特点

localStorage、sessionStorage、Cookie的区别以及特点

时间:2024-08-22 19:23:42浏览次数:10  
标签:function sessionStorage localStorage Cookie showOutput 页面

文章目录


一、localStorage、sessionStorage、Cookie是什么?

localStoragesessionStorageCookie 都是浏览器中用于存储数据的机制,但它们在存储的范围、持久性、和使用场景上有显著的区别。

二、各自特点以及之间的区别

1. window.localStorage

作用范围: 存储的数据在整个浏览器的同一域名下都可以访问(包括不同的标签页、窗口)。
持久性: 数据永久保存在浏览器中,直到通过代码删除或用户清除浏览器数据为止,即使关闭浏览器和计算机,数据仍然存在。
存储容量: 一般为 5MB 左右,不同浏览器可能会有所不同。
使用场景: 适用于需要长期保存的、与特定用户相关的数据,例如用户偏好设置、主题选择等。

2. sessionStorage

作用范围: 存储的数据仅在同一浏览器窗口或标签页中可用,不同的标签页和窗口间不能共享 sessionStorage 数据。
持久性: 数据在浏览器窗口或标签页关闭时被自动清除。
存储容量: 一般也为 5MB 左右,与 localStorage 相同。
使用场景: 适用于仅在单个浏览会话期间需要保存的数据,例如表单输入临时保存、单次操作步骤记录等。

3. Cookie

作用范围: 可以在同一域名下的所有浏览器窗口和标签页中访问。通过设置 Domain 属性,甚至可以在子域之间共享 Cookie。
持久性: 可以设置 Expires 或 Max-Age 属性来控制 Cookie 的过期时间。如果没有设置,则 Cookie 在浏览器关闭后会被删除(即所谓的“会话性 Cookie”)。
存储容量: 每个 Cookie 的大小通常限制为 4KB,总数也有限制(不同浏览器有所不同,通常一个域名下最多 20-50 个)。
使用场景: 适用于与服务器之间的会话管理、保存用户登录状态、跟踪用户行为等。由于 Cookie 会在每次 HTTP 请求时发送到服务器,所以通常用于需要与服务器交互的场景。

三、写一个html页面以用来测试这三者不同的区别

下面是一个简单的 HTML 页面,用来测试 localStorage、sessionStorage 和 Cookie 之间的区别。这个页面包含三个按钮,分别用于设置、读取和删除 localStorage、sessionStorage 和 Cookie 的值,并在页面上显示结果。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Storage Test</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
        }
        button {
            margin: 10px 0;
            padding: 10px;
            font-size: 16px;
        }
        .output {
            margin-top: 20px;
            border-top: 1px solid #ccc;
            padding-top: 10px;
        }
    </style>
</head>
<body>
    <h1>Storage Test: localStorage, sessionStorage, and Cookies</h1>

    <h2>localStorage</h2>
    <button onclick="setLocalStorage()">Set localStorage</button>
    <button onclick="getLocalStorage()">Get localStorage</button>
    <button onclick="removeLocalStorage()">Remove localStorage</button>

    <h2>sessionStorage</h2>
    <button onclick="setSessionStorage()">Set sessionStorage</button>
    <button onclick="getSessionStorage()">Get sessionStorage</button>
    <button onclick="removeSessionStorage()">Remove sessionStorage</button>

    <h2>Cookie</h2>
    <button onclick="setCookie()">Set Cookie</button>
    <button onclick="getCookie()">Get Cookie</button>
    <button onclick="removeCookie()">Remove Cookie</button>

    <div class="output" id="output"></div>

    <script>
        // localStorage functions
        function setLocalStorage() {
            localStorage.setItem('testLocalStorage', 'Hello from localStorage!');
            showOutput('localStorage set.');
        }

        function getLocalStorage() {
            const value = localStorage.getItem('testLocalStorage');
            showOutput('localStorage value: ' + value);
        }

        function removeLocalStorage() {
            localStorage.removeItem('testLocalStorage');
            showOutput('localStorage removed.');
        }

        // sessionStorage functions
        function setSessionStorage() {
            sessionStorage.setItem('testSessionStorage', 'Hello from sessionStorage!');
            showOutput('sessionStorage set.');
        }

        function getSessionStorage() {
            const value = sessionStorage.getItem('testSessionStorage');
            showOutput('sessionStorage value: ' + value);
        }

        function removeSessionStorage() {
            sessionStorage.removeItem('testSessionStorage');
            showOutput('sessionStorage removed.');
        }

        // Cookie functions
        function setCookie() {
            document.cookie = "testCookie=Hello from Cookie; path=/; max-age=3600"; // 1 hour expiration
            showOutput('Cookie set.');
        }

        function getCookie() {
            const cookies = document.cookie.split('; ').find(row => row.startsWith('testCookie='));
            const value = cookies ? cookies.split('=')[1] : null;
            showOutput('Cookie value: ' + value);
        }

        function removeCookie() {
            document.cookie = "testCookie=; path=/; max-age=0";
            showOutput('Cookie removed.');
        }

        // Utility function to show output on the page
        function showOutput(message) {
            const output = document.getElementById('output');
            const newMessage = document.createElement('p');
            newMessage.textContent = message;
            output.appendChild(newMessage);
        }
    </script>
</body>
</html>

四、开始测试

打开两个窗口,测试窗口间的 localStorage、sessionStorage 和 Cookie 的访问情况,以更好地理解它们的差异。
页面1
在这里插入图片描述
页面2
在这里插入图片描述

测试 localStorage:

页面1点击Set localStorage按钮
在这里插入图片描述

页面2点击Get localStorage按钮
在这里插入图片描述

页面1点击Remove localStorage按钮
在这里插入图片描述

页面2点击Get localStorage按钮
在这里插入图片描述

测试 sessionStorage:

页面1点击Set sessionStorage按钮
在这里插入图片描述

页面2点击Get sessionStorage按钮
在这里插入图片描述

测试 Cookie:

页面1点击Set Cookie按钮
在这里插入图片描述
页面2点击Get Cookie按钮
在这里插入图片描述
页面210s后再次点击Get Cookie按钮(设置Cookie10s后过期)
在这里插入图片描述

总结

localStorage: 用于长期、持久的客户端数据存储,适合需要跨页面访问并长期保存的数据。
sessionStorage: 用于单次会话的数据存储,数据只在会话期间有效。
Cookie: 用于服务器和客户端之间的数据交换,通常用于会话管理、身份验证等场景,具有小容量和广泛的作用范围。

标签:function,sessionStorage,localStorage,Cookie,showOutput,页面
From: https://blog.csdn.net/m0_70590680/article/details/141432924

相关文章

  • Cookie,Session Filter,Listener详解
    HTTP请求的无状态性HTTP的无状态性是其一个重要的特征,指的是HTTP协议本身并不保留客户端与服务器交互的历史信息,换而言之,即每次的HTTP请求都是独立的,服务器在处理每一个请求时都不会记住前一个请求的状态无状态的含义独立性:每次的HTTP请求都是独立的,不依赖于之前的请......
  • 前端数据持久化——Vuex+LocalStorage
    VuexVueX详解_组合式vuex-CSDN博客 LocalStorageLocalStorage是一种WebAPI,它允许网站在用户的本地浏览器中存储和检索数据,而不是将数据存储在服务器上。以下是LocalStorage的详细解析:一、LocalStorage的基本特点本地存储:LocalStorage存储的数据保存在用户的浏览器中,不......
  • LocalStorage 的使用方法
    LocalStorage是一种web端的存储机制,它使得由JavaScript编写的网站或者应用可以无限期的在浏览器中存储并访问数据。什么是无限期呢?就是说存储在浏览器中的数据是会一直存在的,及时浏览器被关闭了也不会消失。LocalStorage的使用方法要在你的web应用中使用LocalStorage,只......
  • .net core cookie 鉴权
    思路:在startup中的configservice设置cookie鉴权,在config方法中use鉴权,然后添加两个页面,一个登录页面,一个用户信息页面(登陆后才能访问,没有登录则返回失败或者需要登录) 1:添加一个cookie鉴权的方法1publicclassCookieAuthConfig2{3publicstaticvoidConfigureSe......
  • Cookie和Session的区别
    Cookie:Cookie是保存在客户端的一小块文本串的数据。客户端向服务器发起请求时,服务端会向客户端发送一个Cookie,客户端就把Cookie保存起来。在客户端下次向同一服务器再发起请求时,Cookie被携带发送到服务器。服务端可以根据这个Cookie判断用户的身份和状态。Session:Sessi......
  • Cookie和Sessio
    Cookie是什么?    Cookie是保存在客户端的,是浏览器向服务端发送请求时,会携带Cookie信息,将Cookie发送至服务端。    一个浏览器访问多个不同的服务端,而请求每一个服务端时,可以携带多个Cookie        Cookie组成是由key和value组成的,key存放的是该Co......
  • XSS盲打与cookie劫持
    目录【学习目标、重难点知识】【学习目标】【重难点知识】XSS盲打(加载远程攻击payload)XSS偷cookiecookie收集在线XSS收集平台的使用1.BeeF框架的使用BeeF简介安装和使用XSS一些实战应用1.XSSPDF2.公网投毒3.网站挂马XSS防御HttpOnly输入检查输出检查......
  • Cookie、localStorage 和 sessionStorage 的区别及应用实例
    在前端开发中,持久化数据存储是一个非常常见的需求。为了实现这一点,浏览器提供了多种方式,包括Cookie、localStorage和sessionStorage。这三者各有优劣,适用于不同的场景1.CookieCookie是浏览器存储少量数据的一种机制,通常由服务器生成并发送到客户端。每次客户端向同一域名发......
  • Java网络编程——Cookie & Session
    cookie前面我们学习Okhttp3库可以调用API、抓取网页、下载文件。但是这些操作都是不要求登录的,如果API、网页、文件等内容要求登录才能访问,就需要学习新的cookie相关的知识了。下面以豆瓣为例,使用Java程序读取“我的豆瓣”页面内容,在此过程中熟悉运用cookie。所......
  • 前端cookie为什么无法传递给后端
    异常描述在进行登录权限校验时,需要使用cookie。然而,在设置cookie时会出现以下异常,导致后端session为空异常。前端已经设置WITH_CREDENTIALS:true。解决办法将访问的127.0.0.1修改为使用localhost进行访问,就可以携带上cookie了。可能原因1.Cookie的域名限制Cookie......