当前位置: 首页 > wzjs >正文

app开发与网站建设关键词自动优化工具

app开发与网站建设,关键词自动优化工具,上市公司年报查询网站,中学生做的网站有哪些引言 在现代 Web 开发中,跨域通信是常见的需求,但浏览器的同源策略(Same-Origin Policy)为此设置了天然屏障。window.postMessage API 正是为解决这个问题而生,本文将深入解析其工作原理、核心使用场景,并…

引言

在现代 Web 开发中,跨域通信是常见的需求,但浏览器的同源策略(Same-Origin Policy)为此设置了天然屏障。window.postMessage API 正是为解决这个问题而生,本文将深入解析其工作原理、核心使用场景,并通过具体 Demo 演示其实现过程。


一、核心使用场景

1. 跨域 iframe 通信

当父页面需要与不同源的子 iframe 交换数据时(如第三方组件集成),postMessage 能安全地穿透同源限制。

2. 多窗口应用交互

浏览器中多个独立窗口(如通过 window.open 打开的弹窗)之间进行数据同步,即使这些窗口来源不同。

3. Web Worker 通信

主线程与 Web Worker 之间传递复杂数据结构,实现非阻塞式交互。

4. 微前端架构

不同子应用(可能部署在不同域名)间的状态同步和事件传递。


二、实现原理剖析

1. 消息传递机制

targetWindow.postMessage(message, targetOrigin, [transfer]);
  • targetWindow: 接收消息的窗口引用(iframe.contentWindow 或 window.open 返回的引用)

  • message: 可序列化的数据(支持字符串、对象等)

  • targetOrigin: 指定允许接收的源(* 表示任意源,生产环境应避免)

2. 消息接收机制

通过监听 message 事件处理接收:

window.addEventListener('message', (event) => {// 必须验证消息来源if (event.origin !== 'https://trusted-site.com') return;console.log('Received:', event.data);console.log('From:', event.source);
});

3. 安全机制

  • Origin 验证:必须检查 event.origin 防止恶意站点攻击

  • 数据验证:对接收数据进行严格校验

  • 有限暴露event.source 只提供部分窗口控制方法


三、实战 Demo 演示

Demo 1:跨域 iframe 通信

父页面(https://parent.com):

<iframe id="childFrame" src="https://child.com"></iframe><script>const frame = document.getElementById('childFrame');// 发送消息给子iframeframe.contentWindow.postMessage({ type: 'GREETING', text: 'Hello from parent!' },'https://child.com');// 接收子iframe消息window.addEventListener('message', (event) => {if (event.origin !== 'https://child.com') return;console.log('Parent received:', event.data);});
</script>

子页面(https://child.com):

<script>// 接收父页面消息window.addEventListener('message', (event) => {if (event.origin !== 'https://parent.com') return;console.log('Child received:', event.data);// 回复消息event.source.postMessage({ type: 'REPLY', text: 'Message received!' },event.origin);});
</script>

Demo 2:窗口间通信

主窗口:

const childWindow = window.open('https://child.com/popup');// 等待子窗口加载完成
setTimeout(() => {childWindow.postMessage('Auth token: XYZ123', 'https://child.com');
}, 2000);

弹出窗口:

window.addEventListener('message', (event) => {if (event.origin !== 'https://parent.com') return;console.log('Received auth token:', event.data);event.source.postMessage('Auth confirmed', event.origin);
});

四、安全最佳实践

  1. 始终验证 origin:严格检查 event.origin

  2. 限制 targetOrigin:避免使用通配符 *

  3. 敏感数据加密:传输重要信息时进行加密处理

  4. 及时移除监听器:使用 removeEventListener 清理

  5. 使用 Transferable 对象:传输大型二进制数据时提升性能


五、总结

window.postMessage 为实现安全跨域通信提供了标准化方案,但其强大能力也伴随着安全风险。开发者需要:

  • 深入理解同源策略的限制与突破方式

  • 严格遵循安全实践规范

  • 根据场景选择最合适的通信方案

随着 Web 应用的日益复杂,掌握 postMessage 的正确使用方式将成为现代前端开发者的必备技能。


文章转载自:

http://zqtJ97rd.mghgL.cn
http://akrMjRPP.mghgL.cn
http://Fpy8xLqb.mghgL.cn
http://iqXadmZi.mghgL.cn
http://nSYafXJP.mghgL.cn
http://MkTbHwIc.mghgL.cn
http://xlyxzFzL.mghgL.cn
http://UTFcf3D0.mghgL.cn
http://15o4AWcG.mghgL.cn
http://M48PU5s3.mghgL.cn
http://cCVhTJm8.mghgL.cn
http://62C51aJ5.mghgL.cn
http://wMgNjb8D.mghgL.cn
http://WY7Cha0B.mghgL.cn
http://yglwhXpf.mghgL.cn
http://14qVlHnV.mghgL.cn
http://vGgrsG59.mghgL.cn
http://scr223qq.mghgL.cn
http://r2F5RAJu.mghgL.cn
http://gRbosZ01.mghgL.cn
http://Do053Dvr.mghgL.cn
http://sDftEtvS.mghgL.cn
http://sYGUOldc.mghgL.cn
http://IBtnWOJU.mghgL.cn
http://2wd2aXiH.mghgL.cn
http://mlTJ7bte.mghgL.cn
http://Nv3tKrdv.mghgL.cn
http://weD6AWob.mghgL.cn
http://JBHlGDN5.mghgL.cn
http://xj3Nu7L0.mghgL.cn
http://www.dtcms.com/wzjs/652608.html

相关文章:

  • 建站制作企业可以做软件的网站有哪些功能
  • 经营网站需要什么资质如何做网站计数器
  • 如何做繁体字网站那些网站做任务能赚钱
  • 健身房网站建设网络营销是网上销售吗
  • 东莞网站建站模板厦门网站建设咨询
  • 和城乡建设厅官方网站刀客源码网
  • 策划行业网站五金网站方案
  • 国外的营销网站有哪些网页建设方案怎么写
  • 做网站多少钱西宁君博领先云核wordpress
  • 泗阳网站定制手机网站支付
  • 网站开发技术网站模板如何做好网站
  • 网页设计基础ppt东莞网站优化流程
  • 网站系统 建设和软件岗位职责wordpress 总站模板
  • 坊网站建设上海网站建设服务分录
  • 建网站主要工具厦门网站做优化
  • 网站建设开发公司地址厦门住房建设局网站首页
  • 男女生做爰视频网站网站开发代码实例
  • 建个网站需要多少钱网店设计分析
  • 网站制作常见的问题seo网站优化外包
  • 织梦搬家 网站空白滨江专业网页制作哪家好
  • 上海紫昌网站建设wordpress 网址导航页
  • 网站建设基础教学设计phpcms网站备份
  • 东莞网站建设公司好企业资源计划系统
  • php网站设计要学多久劳力士手表价格及图片 官方网站
  • 做网站专业公司电话职高网站建设知识点
  • 网站开发中的著作权归属建站方法
  • 网站实名认证 备案如何自己做小程序免费
  • 云南公司建网站多少钱网站的建设时间表
  • 运城市盐湖区姚孟精诚网站开发中心视频剪辑制作
  • 郑州网站建设公司排行榜口碑好网站建设