Web本地存储 - localStorage

APP抓包-代理转发绕过反代理+Xposed绕过证书校验 而这里的牛牛不止设置了反代理还设置了证书校验,一闪而过的三个数据包就是在校验证书。而proxifier工具的转发机制获取的是网络接口出口数据,相当于是在网络接口设代理。这个时候就可以在夜神打开牛牛开始抓包了,打开牛牛可以看到proxifier有夜神流量通过。关闭代理之后牛牛就正常了,可恶的牛牛啊,这样我没办法抓包啊,怎么办啊。模拟器开启代理,burp开启监听。打开牛牛app,牛牛不在报错。牛牛app检测的是系统代理,也就是在模拟器或手机上设置的代理。再在浏览器下载两个模块,在夜神安装,用来屏蔽证书校验。 阅读详情

HTML5的Web本地存储(离线存储)是利用localStorage。

我们直接来看这个”便条贴”案列:

<!DOCTYPE html>
<html>
<head>
    <title>Web本地存储</title>
</head>
<body>
    <form>
        <input type="text" id="note_text">
        <input type="button" id="add_button" value="Add Sticky Note to Self">
    </form>
    <ul id="stickies"></ul>
</body>
<script type="text/javascript">
    window.onload = init;
    function init(){
        var button = document.getElementById("add_button");
        button.onclick = createSticky; // 按钮点击处理程序

        for(var i=0;i<localStorage.length;i++){
            var key = localStorage.key(i);
            // 检查数据项的键是否"sticky"开头,来确保它是一个便条贴。(localStorage中可能还存储其他数据项,而不仅仅是我们的便条贴)
            if (key.substring(0,6) == "sticky") {
                 var value = localStorage.getItem(key);
                 addStickyToDom(value);
            }
        }
    }

    // 编写addStickyToDom函数,向<ul>元素插入便条
    function addStickyToDom(value){
        var stickies = document.getElementById("stickies");
        var sticky = document.createElement("li");
        var span = document.createElement("span");
        span.setAttribute("class","sticky");
        span.innerHTML = value;
        sticky.appendChild(span);
        stickies.appendChild(sticky);
    }

    // 创建一个便条贴
    function createSticky(){
        var value = document.getElementById("note_text").value;
        var key = "sticky_" + localStorage.length;
        localStorage.setItem(key,value);
        addStickyToDom(value);
    }
</script>
</html>

2.能否存储数组或对象
在存储之前,完全可以把一个数组或对象转换为字符串。

<!DOCTYPE html>
<html>
<head>
    <title>Web本地存储</title>
</head>
<body>
    <form>
        <input type="text" id="note_text">
        <input type="button" id="add_button" value="Add Sticky Note to Self">
    </form>
    <ul id="stickies"></ul>
</body>
<script type="text/javascript">
    window.onload = init;
    function init(){
        var button = document.getElementById("add_button");
        button.onclick = createSticky; // 按钮点击处理程序

        var stickiesArray = getStickiesArray(); // 获取包含便条贴键的数组

        for(var i=0;i<stickiesArray.length;i++){
            var key = stickiesArray[i]; // 数组中的每一项分别是一个便条贴的键
            var value = localStorage[key]; // 从localStorage中获取相应的值
            addStickyToDom(value); //增加到DOM
        }
    }

    // 创建一个便条贴
    function createSticky(){
        var stickiesArray = getStickiesArray(); // 首先获取便条贴数组
        var currentDate = new Date();
        var key = "sticky_" + currentDate.getTime();
        var value = document.getElementById("note_text").value;
        localStorage.setItem(key,value);

        stickiesArray.push(key); // 把新键添加到数组
        // 然后将这个数组转为字符串,写回到localStorage
        localStorage.setItem("stickiesArray",JSON.stringify(stickiesArray));

        addStickyToDom(value); // 最后更新页面
    }

    // 获取存储所有便条贴键的数组
    function getStickiesArray(){
        // 首先从localStorage得到数据项
        var stickiesArray = localStorage.getItem("stickiesArray");
        if (!stickiesArray) { // 如果是第一次加载这个应用,可能还没有
            stickiesArray = [];
            localStorage.setItem("stickiesArray",JSON.stringify(stickiesArray));
        }else{
            // 转换为一个javascript数组
            stickiesArray = JSON.parse(stickiesArray);
        }
        return stickiesArray;
    }


    // 编写addStickyToDom函数,向<ul>元素插入便条
    function addStickyToDom(value){
        var stickies = document.getElementById("stickies");
        var sticky = document.createElement("li");
        var span = document.createElement("span");
        span.setAttribute("class","sticky");
        span.innerHTML = value;
        sticky.appendChild(span);
        stickies.appendChild(sticky);
    }

</script>
</html>

3.如何删除
删除所有数据项(使用时要当心): localStorage.clear()
删除某一个数据项: localStorage.removeItem(key);

仔细想想,我们这里删除便条贴并不只是调用removeItem方法那么简单,我们还需要处理stickiesArray。我们写个函数来干这事吧:

function deleteSticky(key){
        // 首先从localStorage删除
        localStorage.removeItem(key);

        var stickiesArray = getStickiesArray();
        if (stickiesArray) {
            for(var i=0;i<stickiesArray.length;i++){
                if (key == stickiesArray[i]) {
                    // 找到这个键后,将它从数组删除
                    stickiesArray.splice(i,1);
                }
            }
            // 最后保存新的stickiesArray到localStorage
            localStorage.setItem("stickiesArray",JSON.stringify(stickiesArray));
        }
    }

4.优化便条贴应用

<!DOCTYPE html>
<html>
<head>
    <title>Web本地存储</title>
</head>
<body>
    <form>
        <input type="text" id="note_text">
        <input type="button" id="add_button" value="Add Sticky Note to Self">
    </form>
    <ul id="stickies"></ul>
</body>
<script type="text/javascript">
    window.onload = init;
    function init(){
        var button = document.getElementById("add_button");
        button.onclick = createSticky; // 按钮点击处理程序

        var stickiesArray = getStickiesArray(); // 获取包含便条贴键的数组

        for(var i=0;i<stickiesArray.length;i++){
            var key = stickiesArray[i]; // 数组中的每一项分别是一个便条贴的键
            var value = localStorage[key]; // 从localStorage中获取相应的值
            addStickyToDom(key,value); //增加到DOM
        }
    }

    // 创建一个便条贴
    function createSticky(){
        var stickiesArray = getStickiesArray(); // 首先获取便条贴数组
        var currentDate = new Date();
        var key = "sticky_" + currentDate.getTime();
        var value = document.getElementById("note_text").value;
        localStorage.setItem(key,value);

        stickiesArray.push(key); // 把新键添加到数组
        // 然后将这个数组转为字符串,写回到localStorage
        localStorage.setItem("stickiesArray",JSON.stringify(stickiesArray));

        addStickyToDom(key,value); // 最后更新页面
    }

    // 获取存储所有便条贴键的数组
    function getStickiesArray(){
        // 首先从localStorage得到数据项
        var stickiesArray = localStorage.getItem("stickiesArray");
        if (!stickiesArray) { // 如果是第一次加载这个应用,可能还没有
            stickiesArray = [];
            localStorage.setItem("stickiesArray",JSON.stringify(stickiesArray));
        }else{
            // 转换为一个javascript数组
            stickiesArray = JSON.parse(stickiesArray);
        }
        return stickiesArray;
    }


    // 编写addStickyToDom函数,向<ul>元素插入便条
    function addStickyToDom(key,value){
        var stickies = document.getElementById("stickies");
        var sticky = document.createElement("li");
        sticky.setAttribute("id",key);
        var span = document.createElement("span");
        span.setAttribute("class","sticky");
        span.innerHTML = value;
        sticky.appendChild(span);
        stickies.appendChild(sticky);
        // 点击一个便条贴就会调用deleteSticky函数
        sticky.onclick = deleteSticky;
    }

    // 点击便条贴的事件处理
    function deleteSticky(e){
        // 得到<li>上的id
        var key = e.target.id;
        if (e.target.tagName.toLowerCase() == "span") {
            // 如果点击的是<span>则需要得到它的父元素<li>的id
            key = e.target.parentNode.id;
        }


        localStorage.removeItem(key);
        var stickiesArray = getStickiesArray();
        if (stickiesArray) {
            for(var i=0;i<stickiesArray.length;i++){
                if (key == stickiesArray[i]) {
                    // 找到这个键后,将它从数组删除
                    stickiesArray.splice(i,1);
                }
            }
            localStorage.setItem("stickiesArray",JSON.stringify(stickiesArray));

            // 最后还需要从页面删除这个便条贴
            removeStickyFromDOM(key);
        }
    }

    // 从DOM删除便条贴
    function removeStickyFromDOM(key){
        // 从DOM获取<li>元素
        var sticky = document.getElementById(key);
        // <ul>删除子节点<li>
        sticky.parentNode.removeChild(sticky);
    }

</script>
</html>
Linux - xarray 工具类 第三层节点直接与绿色的值绑定,若需要像数组一样通过下标访问绿色的值对象那么需要给每一个节点进行编码,这样通过根节点即可访问到具体的对象。对于未使用到的小数组不申请空间,这样只需设计一种方法将这些非连续的小数组在一个数据结构中组织在一起即可,对于这个数组结构需要具有结构紧凑并且能够快速定位到对应的小数组段上,这时候树形结构上场了。一个很大的数组必然可以由一个个小数组拼接而成,若定义一个最小粒度的数组长度,比如长度4,那么从宏观上看一个大数组就由一个个长度为4的小数组排队而成。 阅读详情

相关推荐

部署Doris

本文详细介绍了Apache Doris三节点集群(3 FE + 3 BE)的部署流程。首先从硬件配置、系统参数调优等准备工作入手,然后分步说明FE和BE节点的配置方法,包括端口设置、存储路径规划等关键参数。部署完成后提供SQL测试用例和数据一致性验证方法,并总结常见问题解决方案,如节点加入失败、磁盘容量异常等。文档包含完整的命令和配置示例,强调高可用配置和监控建议,为生产环境部署提供实用指导。

神棍之路 1712

换肤后把主题存入localStorage,刷新和关闭后保持最后的选择状态

过一个休息日休息一下,能让脑袋清醒,不用急躁,慢慢来,也许结果总会让你怦然心动。 页面 methods中: localStorage.setItem("themeName", theme);当选择皮肤后把选择的主题存储起来,命名为'themeName',在Application中可以看到: 页面加载的时候获取这个themeName。 知识点: localSt...

weixin_30897233的博客 251

AOA(Angle of Arrival,到达角)定位算法及其误差分析的原理和MATLAB仿真_aoa定位算法

如图所示,有基站 S 1 ( x 1 , y 1 , z 1 ) , S 2 ( x 2 , y 2 , z 2 ) S_1(x_1,y_1,z_1),S_2(x_2,y_2,z_2) S1​(x1​,y1​,z1​),S2​(x2​,y2​,z2​),目标 T ( x , y , z ) T(x,y,z) T(x,y,z)。2+(z_1-z_2)^2} step1:两基站间的距离L=(x1−x2)2+(y1​−y2​)2+(z1​−z2​)2。

2401_87555613的博客 1482

html5中web本地存储 客户端存储数据localStorage

web本地存储 客户端存储数据localStorage

weixin_72303943的博客 356

手把手教你用VCS+Verdi在Linux下仿真蜂鸟E203 RISC-V核(附波形调试技巧)

本文详细介绍了在Linux环境下使用VCS和Verdi工具链对蜂鸟E203 RISC-V核进行仿真验证的完整流程。从环境配置、工程结构解析到VCS编译优化和Verdi波形分析技巧,提供了实战性强的调试方法和性能优化策略,帮助工程师高效完成数字IC验证工作。

weixin_42531163的博客 415

手把手教你解决Realsense D455在ROS下IMU数据不输出的问题(附固件降级指南)

本文详细解析了Realsense D455在ROS环境下IMU数据不输出的问题,提供了固件降级和ROS配置的完整解决方案。通过版本兼容性分析和实战操作指南,帮助开发者快速恢复IMU数据流,优化机器人开发体验。

weixin_42531494的博客 371

web页面数据存储:localStorage、sessionStorage、cookie使用

一、localStorage localstorage数据创建 //先将数据str通过JSON.stringify()方法进行json化,在将json数据赋值到localStorage对象 localStorage_str localstorage数据读取 //先将localStorage数据localStorage_str进行读取得到json数据,在将json数据通过 JSON.pa...

RuanJianXiaoXueTu的博客 318

中山大学_数据科学与计算机_预推免

前言 2019 年 9 月中旬是中山大学预推免时间,本人没能进到夏令营,但是最后在预推免上岸也算不幸中的万幸。 记忆不一定准确,但希望能帮到他人。 想看 流程 的可以直接看总结,正文部分有本人心路历程。 预推免 中山大学的预推免大致可以分为 报道,机试,面试 三大部分,而且尤其是面试,所有人加起来总时长 3 天,幸运的是,本人被安排在第一天的下午第一场,上午就是机试,报道,机试,面试,无缝衔接。 ...

一把健 5207

前端本地存储之LocalStorage

LocalStorage 是浏览器提供的一种 Web 存储形式,它允许 Web 应用程序将数据本地存储在用户的浏览器中,并且没有过期日期。在这里,即使您关闭浏览器选项卡/窗口,存储的数据也将保持可用。请注意,存储在 LocalStorage 中的数据仅保留在用户用于访问站点的设备上的浏览器中。因此,如果用户稍后使用不同的浏览器或在另一台设备上重新访问同一站点,他们将无法访问存储的数据。

weixin_54203047的博客 3553

STM32CubeMX | 38-使用硬件SPI驱动以太网模块(W5500)

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外设与以W5500通信,驱动以太网模块。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): W5500以太网模块 这里我使用常见的以太网模块W5500: W5500官网 http://www.w5500.cn/ W5500中文手册 iEthernet W5500 Datasheet 软件准备 需要安装好Keil - MDK及芯片对应的包,以

Mculover666的博客(嵌入式) 7383

初探802.11协议(6)——Wi-Fi 6新特性简介

Wi-Fi 6新机制(特性)介绍

FanFF的博客 1522

HTML5 localStorage

HTML5中提供了localStorage对象可以将数据长期保存在客户端,直到人为清除。 localStorage提供了几个方法: 1、存储:localStorage.setItem(key,value) 如果key存在时,更新value 2、获取:localStorage.getItem(key) 如果key不存在返回null 3、删除

稻香的专栏 976

DataEase 未授权+远程代码执行漏洞复现(CVE-2025-49001、CVE-2025-49002)

DataEase 是一款开源的数据分析平台,提供丰富的数据可视化和分析功能,帮助用户轻松地进行数据探索和决策支持。近日,有关DataEase 被爆出多个漏洞,其中 CVE-2025-49001 是由于JWT校验机制错误导致攻击者可伪造JWT令牌绕过身份验证流程,CVE-2025-49002 是由于H2数据库模块没有严格过滤用户输入的JDBC连接参数,可使用大小写绕过补丁。攻击者可利用这些漏洞实现未授权代码执行,威胁用户数据和系统的安全。

李同學AI安全 1947

HTML web 本地存储 (localStorage、sessionStorage)

web 本地存储 (localStorage、sessionStorage) 说明 对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和 sessionStorage sessionStorage(临时存储) :为每一个数据源维持一个存储区域,在浏览器打开期间存在,包括页面重新加载 localStorage(...

吹口哨的兔子 381

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

web本地存储(localStorage、sessionStorage)

web 本地存储 (localStorage、sessionStorage)说明 对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和 sessionStorage sessionStorage(临时存储) :为每一个数据源维持一个存储区域,在浏览器打开期间存在,包括页面重新加载 loc

mjzhang1993的博客 7万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

web 本地存储 (localStorage、sessionStorage)

web 本地存储 (localStorage、sessionStorage) 说明 对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和 sessionStorage sessionStorage(临时存储) :为每一个数据源维持一个存储区域,在浏览器打开期间存在,包括页面重新加载 localSt...

one-way or another 163

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

web的本地存储技术cookie,localStorage,sessionStorage

摘要: web的本地存储技术cookie,localStorage,sessionStorage 1.cookie cookie是由服务器端生成,发送给浏览器,浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器。 co...

252

[web 前端] web本地存储(localStorage、sessionStorage)

cp from : https://blog.csdn.net/mjzhang1993/article/details/70820868 web 本地存储 (localStorage、sessionStorage) 说明 对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和 sessionStora...

weixin_33979745的博客 189

web本地存储--localStorage和sessionStorage

html5提供了两种web本地存储:localStorage和sessionStorage。sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不

sinat_27801935的博客 433

web本地存储(localStorage、sessionStorage、cookie)

web本地存储(localStorage、sessionStorage、cookie) sessionStorage 和 localStorage 的用法基本一致,引用类型的值要转换成JSON 1.localStorage、sessionStorage的用法 保存数据到本地 const info = { name: 'Lee', age: 20, id: '001' }; sessionStorage.setItem('key', JSON.stri

qq_40630924的博客 457

web本地存储的使用和在vue中的封装(localStorage,sessionStorage )

目录 什么是本地存储? localStorage和sessionStorage的区别 localStorage和sessionStorage的使用方法(使用方法是一样的) 开始封装本地存储(以sessionStorage为例) 什么是本地存储? 1.通过本地存储(Local Storage),web 应用程序能够在用户浏览器中对数据进行本地的存储。 2.在 HTML5 之前,应用程序数据只能存储在 cookie 中,包括每个服务器请求。本地存储则更安全,并且可在不影响网站性能的前提下将大量数据

babyxuqian的博客 1388

HTML5中的本地存储sessionStorage、localStorage、Web SQL Database

sessionStorage对象应用 sessionStorage介绍、 在Html5中增加了一个Js对象:sessionStorage;通过此对象可以直接操作存储在浏览器中的会话级别的WebStorage。存储在sessionStorage中的数据首先是Key-Value形式的,另外就是它跟浏览器当前会话相关,当会话结束后,数据会自动清除,跟未设置过期时间的Cookie类似。 sessionSt

Java_han的专栏 3098
上一篇: 跨域 - JSONP
下一篇: UILabel设置删除线(电商商品价格)
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值