sessionStorage,localStorage,cookie

2024-06-04 13:18

本文主要是介绍sessionStorage,localStorage,cookie,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

共同点:都是保存在浏览器端,且同源的。区别:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。


Web Storage: 实现客户端本地的存储,客服cookie的一些限制,数据量更大。

两种存储类型:
     1.sessionStorage: 存储特定于某个服务器会话的数据,在浏览器关闭之后,数据消失。因此本地运行的文件是不可用的。
     2.localStorage: 数据保存在客户端本地的硬件设备中,一直存在。

相关API:

        1.     length: 返回当前storage中的数目。
        2.     key(n):返回第n个条目
        3.      getItem(key):根据指定的key值获取对应的value值
        4.      setItem(key,value):设置指定key值的内容为value
        5.      removeItem(key);根据指定的key值,键值为key的内容
        6.      clear():删除所有值。firefox中没有实现。



限制:大多数浏览器会对同一个来源的数据存在大小的限制,大部分限制5MB,但是也有一部分限制2.5MB 

例子:实现一个简单的留言板功能,利用localStorage存储,并显示在页面上

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>web storage</title>
    <script>
        function saveStorage(id)
        {
            var data = document.getElementById(id).value;
            var time = new Date().getTime();//获取时间戳作为key值
            localStorage.setItem(time,data);//添加一条留言
            alert("提交成功");
            loadStorage("msg");
        }
        function clearStorage(){//清除所有的内容
            localStorage.clear();
            alert("已全部清除");
            loadStorage("msg");
        }
        function loadStorage(id){
            var result = '<table border="1px">';
            for(var i =0;i<localStorage.length;i++){
                var key = localStorage.key(i);
                var value = localStorage.getItem(key);//根据key值 获取对应的留言
                var date = new Date();
                date.setTime(key);
                var datestr = date.toGMTString();
                result+='<tr><td>'+value+'</td><td>' + datestr + '</td></tr>';
            }
            result +='</table>';
            document.getElementById(id).innerHTML = result;
        }
    </script>
</head>
<body>
<header >留言板</header>
<form>
    <textarea id="message" cols="150" rows="30"></textarea><br>
    <input type="button" value="提交" οnclick="saveStorage('message')">
    <input type="button" value="清除" οnclick="clearStorage()">
</form>
<p id="msg"></p>
</body>
</html>

这篇关于sessionStorage,localStorage,cookie的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030186

相关文章

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

JavaScript中document.cookie

“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— MSIE 帮助。一般来说,Cookies 是 CGI 或类似,比 HTML 高级的文件、程序等创建的,但是 javascript 也提供了对 Cookies 的很全面的访问权利。       每个 Cookie 都是这样的:<cookie名>=<值>   <cookie名>的限制与 javasc

html记账本改写:数据重新布局,更好用了,没有localStorage保存版本

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>htm记账本</title><style>table {user-select: none;/* width: 100%; */border-collapse: collapse;}table,th,td {border: 1px solid bla

html 本地存储(localStorage and sessionStorage)

刚刚学习anjularJS和html的项目开发,其中在ui库中使用一种步骤类型的样式,其实就是form表单的ng-if判断显示,样式好用但也伴随着很多的问题,其中一个bug就是刷新会回到第一步,回到第一步的原因是刷新时会从新加载js代码,因为状态没变,所以就会出现无论刷新的哪一步,都会回到第一步,解决该问题的方法就是本地存储。 百度发现有两种存储方式,一个是sessionStorage,还有个

flask-login 生成 cookie,session

flask-login 生成 cookie,session Flask-Login login_user() 显示来自 Set-Cookie 标头的加密 cookie # 模拟一个用户类class User(UserMixin):def __init__(self, id):self.id = id@app.route('/login')def login():# 模拟用户登录过程user

【Http 每日一问,访问服务端的鉴权Token放在header还是cookie更合适?】

结论先行: token静态的,不变的,放在header里面。 典型场景 ,每次访问时需要带个静态token请求服务端,向服务端表明是谁请求,此时token也可以认为是个固定的access-key。token动态的,会失效,放在cookie里面。 典型场景,业务登录态token,存在有效期的,过一段时间可能会失效。 下面具体展开下。 在选择将鉴权 Token 放在 HTTP Header 还是

剖析Cookie的工作原理及其安全风险

Cookie的工作原理主要涉及到HTTP协议中的状态管理。HTTP协议本身是无状态的,这意味着每次请求都是独立的,服务器不会保留之前的请求信息。为了在无状态的HTTP协议上实现有状态的会话,引入了Cookie机制。 1. Cookie定义 Cookie,也称为HTTP cookie、web cookie、互联网cookie或浏览器cookie,是一种用于在用户浏览网站时识别用户并为其准备

uniapp微信小程序开发踩坑日记:Pinia持久化报错Cannot read property ‘localStorage‘ of undefined

插件默认使用 localStorage 实现持久化,小程序端不兼容,需要替换持久化 API import { defineStore } from 'pinia'   export const useCommonStore = defineStore('pack-store', {state: (): State => ({wwInfo: {},globalData: {},timerLoc

cookie实战案例-自动登录网站

在写爬虫的时候,要伪装成真实用户请求。可能需要大量的IP地址,那么大量的IP地址从哪里来呢?这里就需要用代理IP来解决了,有的网站专门通过提供代理IP池服务作为主要的经营业务,只要注册相关网站开通对应套餐就可以了。 这次我们以自动登录一个爬虫代理 IP 网站来做为实战案例: 直接看代码: 账号我已经实现注册好了,可以用代码中的测试账号,也可以自己手动注册一个。 from selenium

关于cookie和session的直观讲解(二)

前言 上一章,讲解了Cookie,本章介绍Session. 概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中HttpSession。 Session 基础 获取HttpSession对象: HttpSession session = request.getSession(); 使用HttpSession对象: Object getAttribute