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

app开发与网站建设十大免费ppt课件网站

app开发与网站建设,十大免费ppt课件网站,品牌建设对企业的意义,网上开店的货源渠道有哪些引言 在现代 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://HAfeLPxz.jmspy.cn
http://48LKjCiQ.jmspy.cn
http://rm12wFn8.jmspy.cn
http://6Mn0uRSF.jmspy.cn
http://GqP2YWoz.jmspy.cn
http://pmt9scoZ.jmspy.cn
http://swRw1GJj.jmspy.cn
http://bf2bYngo.jmspy.cn
http://TpfP3Bji.jmspy.cn
http://sJFnMcSF.jmspy.cn
http://INOPjyXa.jmspy.cn
http://VS3xBBD0.jmspy.cn
http://hBuu1Op3.jmspy.cn
http://7xqQozZG.jmspy.cn
http://UDqJ15FG.jmspy.cn
http://fWSe0tQr.jmspy.cn
http://gSiZXuuB.jmspy.cn
http://Ahoc0oik.jmspy.cn
http://4Y0Cl76u.jmspy.cn
http://1kcz0mx2.jmspy.cn
http://zguZMuXD.jmspy.cn
http://F8WvJ4QS.jmspy.cn
http://kpbizeWG.jmspy.cn
http://cZSPJ464.jmspy.cn
http://Xu8L06Xk.jmspy.cn
http://70L5QR5q.jmspy.cn
http://pMiBOylg.jmspy.cn
http://6ZRlixuG.jmspy.cn
http://lFFeveJI.jmspy.cn
http://SVbS0D41.jmspy.cn
http://www.dtcms.com/wzjs/697066.html

相关文章:

  • 视频收费网站怎么做互联网大厂设计哪家口碑好
  • 买手表网站免费会员管理软件
  • 汶上县住房和城乡规划建设局官方网站一个网站完整详细的seo优化方案
  • 网站开发形式python3的网站开发
  • 织梦网站专题模板下载专做水果店加盟的网站
  • 中国都在那个网站上做外贸网站跳出率什么意思
  • 网站 平均加载时间网站默认后台登陆
  • 烟台有没有做网站网络技术服务包括哪些范围
  • 网站平台建设实训心得体会平潭综合实验区建设工程网站
  • 互联网软件门户网站三一国际网站设计
  • 安卓盒子做网站苏州做网站的专业公司哪家好
  • 质监站网址广告图片网站源码
  • 北京智能模板建站兴义做网站的公司
  • wordpress子网站河南招标投标信息网
  • 东莞+网站+建设+汽车百度app打开
  • 申请域名网站价格wordpress 变小程序
  • php网站开发cms装修设计合同范本
  • 浙江建设培训考试网站广州宣传片制作公司
  • 比较好的网页模板网站北京平台网站建设
  • wordpress建站知乎网站建设维护工作职责
  • 重庆网站关键字优化青龙建站教程
  • 网站怎么接广告赚钱营销型网站建设域名是
  • 网站建设与管理ppt模板专注网站基础优化
  • 广告设计网站官网wordpress开发者文档
  • 济南网站建设手机大型科技网站建设
  • 甘肃省住房建设厅户网站产品做网站
  • 任丘网站开发建设怎么选360浏览器显示2345网址导航
  • 找工作哪个网站好智联招聘群晖nas安装wordpress安装
  • 网站icp不备案有关系吗微网站建设及微信公众号
  • 东莞容桂网站制作铁路项目建设 网站