iframe 页面中获取父级页面的 localStorage 或者 sessionStorage数据

问题

在开发的过程中遇到需要在 iframe 页面中获取父级页面系统所存储的本地数据的需求。由于浏览器的安全策略,是不允许 iframe 页面直接获取系统的存储数据的,那么要如何解决呢?

解决方法

对于该问题,我们可以通过 window.postMessage() 传值来解决

window.postMessage() 方法允许来自一个文档的脚本可以传递文本消息到另一个文档里的脚本,而不用管是否跨域。一个文档里的脚本还是不能调用在其他文档里方法和读取属性,但他们可以用这种消息传递技术来实现安全的通信。

实现代码

1、父级页面在 iframe 加载完成后,使用 postMessage 方法将存储的数据发送给 iframe 。

父级页面代码:

var data = {'localStorage': localStorage.getItem('key'),'sessionStorage': sessionStorage.getItem('key')
};
var iframe = document.getElementById('myIframe');
iframe.onload = function() {iframe.contentWindow.postMessage(JSON.stringify(data), '*');
};

2、在 iframe 中,通过监听父级的 message 事件,获取发送过来的数据。

iframe 页面代码:

window.addEventListener('message', function(event) {var data = JSON.parse(event.data);var localStorageValue = data.localStorage;var sessionStorageValue = data.sessionStorage;console.log(localStorageValue); // 输出localStorage的值console.log(sessionStorageValue); // 输出sessionStorage的值
});

这样就实现了 iframe 页面中获取父级页面系统所存储的本地数据的需求了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/643697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【极数系列】Flink环境搭建(02)

【极数系列】Flink环境搭建(02) 引言 1.linux 直接在linux上使用jdk11flink1.18.0版本部署 2.docker 使用容器部署比较方便,一键启动停止,方便参数调整 3.windows 搭建Flink 1.18.0版本需要使用Cygwin或wsl工具模拟unix环境…

每日一题——LeetCode1309.解码字母到整数映射

方法一 个人方法&#xff1a; 由题意可得&#xff1a; 1、1-26对应a-z&#xff0c;只不过从10开始&#xff0c;后面要加#才能表示字母 2、10# - 26# 都是三位数&#xff0c;开头<2&#xff0c;结尾都为# 3、某个数后面两位如果不为#那么该数为1-9对应a-i&#xff0c;如果…

SQL 注入漏洞原理以及修复方法

漏洞名称 &#xff1a;SQL注入 、SQL盲注 漏洞描述&#xff1a;所谓SQL注入&#xff0c;就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行恶意的SQL命令。具体来说&#xff0c;它是利用现有应用程序&#xff0c;将&…

华为设备配置简单流分类

实验需求&#xff1a;10.1.1.0/24网段的PC访问PC3&#xff0c;流量进入AR1时&#xff0c;DSCP字段优先级为0&#xff0c;在AR1进行配置&#xff0c;将10.1.1.0/24网段流量的优先级映射为内部优先级46。 实验步骤&#xff1a; 步骤1&#xff1a;配置IP地址 [AR1]interface g0/…

Pygame之纯Python实现你好2024效果

Pygame之纯Python实现你好2024效果 前言&#xff1a; 对于某些指JavaScript与前端实现为Python实现你好2024效果的营销号实在看不下去了。无底线营销&#xff0c;还要私信拿源码&#xff0c;hhh 于是就有了以下代码&#xff1a; 运行前安装pygame pip install pygame运行效果…

k8s-基础知识(Service,NodePort,CusterIP,NameSpace,资源限制)

Node Node 是 Pod 真正运行的主机&#xff0c;可以是物理机&#xff0c;也可以是虚拟机。 Annotations 原文链接 Annotations 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象&#xff0c;Annotations 则是用来记录一些附加信息&#xff0c;用来辅助应…

Linux mesg命令教程:如何控制终端的消息接收(附案例详解和注意事项)

Linux mesg命令介绍 mesg是一个用户用来控制其他用户是否可以向其关联到标准错误输出的终端设备写入访问权的实用程序。如果允许写入访问&#xff0c;那么像talk(1)和write(1)这样的程序可能会在终端上显示消息。在优先考虑各种安全风险的用户日益增多的情况下&#xff0c;正确…

HTML 入门手册(一)

目录 HTML介绍 1-基础语法 单标签 双标签 整体结构 2-标题和水平线 标题 水平线 3-段落和换行 段落 换行 4-列表 无序列表 有序列表 嵌套列表 5-div和span div span 6-格式化标签 粗体 斜体 下划线中划线 上标和下标 7-超链接(a标签) 链接到URL 链接…

openharmony应用开发HDC 常用命令

HDC 常用命令 1.查看hdc版本&#xff1a; hdc --version 2.查看设备sn号&#xff1a; hdc list targets 3.进入shell: hdc shell 4.重启设备 hdc shell reboot 5.设置RK开发板根目录的读写权限 hdc shell mount -o rw,remount / # 此命令用于解决推包时提示只读路径&…

GitHub无法完成推送 的设置选项

GitHub无法完成推送 的设置选项 系统设置 VS中控制台设置【指令】 控制台调出方法 以下为VS控制台指令 git config --global --unset http.proxy git config --global --unset https.proxygit config --global http.proxy 127.0.0.1:7890 git config --global https.proxy …

如何在Nginx中配置防盗链?

如何在Nginx中配置防盗链? 防盗链是一种保护网站资源不被非法下载的技术。在Web服务器中&#xff0c;我们可以使用Shell脚本来实现防盗链的配置。本文将介绍如何在Linux系统中的Nginx Web服务器中使用Shell脚本实现防盗链。 一、什么是防盗链&#xff1f; 防盗链是一种防止…

网站安全每日话题——网页内容被篡改怎么办

大家好&#xff0c;今天我们要聊一个网站安全的话题——网页内容被篡改。这可不是小事&#xff0c;可能会给我们的网站和用户带来很大的危害。咱们一起来看看吧&#xff01; 网页内容被篡改的危害 信任丧失 用户信任是网站成功的基石。一旦网页内容被篡改&#xff0c;用户可…

docker - compose 部署 Tomcat

目录 下面用 docker-compose 方法部署 Tomcat 1、准备工作 2、部署容器 启动容器 查看新启动的容器 3、总结 下面用 docker-compose 方法部署 Tomcat 1、准备工作 先在主机创建工作文件夹&#xff0c;为了放置 Tomcat 的配置文件等。创建文件夹的方法&#xff0c;自己搞…

【从浅到深的算法技巧】链表 补

3.8 队列的实现 基于链表数据结构实现Queue API也很简单&#xff0c;如下面算法所述。它将队列表示为一条从最早插入的元索到最近插入的元素的链表&#xff0c;实例变量first指向队列的开头&#xff0c;实例变量last指向队列的结尾。这样&#xff0c;要将一个元素 入列( enqueu…

React类组件中super()和super(props)有什么区别?

React中super&#xff08;&#xff09;和super&#xff08;props&#xff09;有什么区别&#xff1f; 回答思路&#xff1a;说说ES6类的继承-->说说类组件的继承-->总结区别ES6类的继承类组件的继承总结区别 回答思路&#xff1a;说说ES6类的继承–>说说类组件的继承–…

【操作系统】实验三 编译 Linux 内核

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

基于springboot+vue的在线商城系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

git的使用(idea中)

文章目录 Git分布式版本控制工具1、目标2、概述2.1、开发中的实际场景2.2、版本控制器的方式2.3、SVM2.4、Git2.5、Git工作流程 3、Git安装与常用命令3.1、Git环境配置3.1.1 下载与安装3.1.2基本配置3.1.3为常用指令配置别名(可选)3.1.4解决GitBash乱码问题 3.2、获取本地仓库3…

Ubuntu20.04安装cuda12.11

显卡驱动 首先就是安装显卡驱动&#xff0c;我是双3090&#xff0c;不知道为什么&#xff0c;官网死活安不上&#xff0c;最后从软件更新那里直接安装上了&#xff0c;绷不住了 cuda 首先从官网下载runfile文件 安装的时候记得驱动和Kernel Objects 和 nvidia-fs不选 然后…

第11次修改了可删除可持久保存的前端html备忘录:将样式分离,可以自由秒添加秒删除样式

第11次修改了可删除可持久保存的前端html备忘录&#xff1a;将样式分离&#xff0c;可以自由秒添加秒删除样式 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"…