首页 > 其他分享 >JS、HTML内嵌iframe第三方网页,如何通信?

JS、HTML内嵌iframe第三方网页,如何通信?

时间:2024-01-23 12:32:05浏览次数:41  
标签:postMessage origin JS window HTML 消息 iframe 页面

在实际使用postMessage时,如果你不确定确切的父页面或子页面的源地址(即origin),可以采取以下策略:

  1. 允许任意源发送消息: 如果你希望iframe子页面能够向任何父页面发送消息,或者父页面接受来自任何域的iframe消息,可以在调用postMessage时将目标源设置为通配符 *
// 子页面向任意源发送
window.parent.postMessage('消息内容', '*');

// 父页面向任意源的iframe发送
iframe.contentWindow.postMessage('消息内容', '*');

注意:这样做虽然方便了跨域通信,但也增加了安全风险,因为它意味着你的页面将接收和处理来自任何源的消息。因此,在接收到消息后,务必验证消息来源和内容的安全性。

  1. 动态获取当前源: 在发送消息的一方,可以使用window.location.origin来获取当前页面的实际源地址,然后将其传递给postMessage函数:
// 获取当前页面的源,并用于发送消息
var currentOrigin = window.location.origin;
window.parent.postMessage('消息内容', currentOrigin);
  1. 安全通信模式: 在父页面监听message事件时,通常需要检查事件的.origin属性以确保消息来自于预期的源。如果你不知道确切的目标源,但知道应该有哪些合法的源,则可以在事件处理器中进行相应的判断:
window.addEventListener('message', function(event) {
  const expectedOrigins = ['https://parent-origin.com', 'https://another-trusted-origin.com'];
  
  if (expectedOrigins.includes(event.origin)) { // 检查是否是信任的源之一
    console.log('接收到的消息:', event.data);
    // 处理消息...
  } else {
    console.warn('接收到不明来源的消息,已被忽略');
  }
}, false);

通过以上方式,可以根据实际情况灵活处理不同源之间的postMessage通信问题。

要使用postMessage发送、接收消息即可。

JS、HTML内嵌iframe第三方网页,如何通信?_父页面

标签:postMessage,origin,JS,window,HTML,消息,iframe,页面
From: https://blog.51cto.com/janeyork/9377375

相关文章

  • 自我记录js正则
    一、数字相关只有数字:/^[0-9]*$/或/^\d{1,}$/整数:/^-?[0-9]\d*$/正整数:/^\+?[1-9]\d*$/非正整数:/^-[1-9]\d*|0$/负整数:/^-[1-9]\d*$/非负整数:/^\d+$/浮点数:/^(-?\d+)(\.\d+)?$/正浮点数:/^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/负浮点数:/^-([1-9]\d*\.\d*|......
  • itext,java,使用html2pdf的一些注意,以及多字体匹配的坑
    一、前提1,做一个能动态改变样式的pdf,并且将文本内容填充进去,那么使用PdfRender就做不到了,e签宝的模板接口也做不到动态改变字体的颜色等。百度查到可以使用itext的html2pdf,可是却没想到在使用过程中有那么多坑,而且很多教程都不贴html,所说html规范严格也没说到底咋严格,最终还是跟......
  • OPENJSON requires Compatibility Level 130
    ParseandTransformJSONDatawithOPENJSONOPENJSONrequiresCompatibilityLevel130TheOPENJSONfunctionisavailableonlyundercompatibilitylevel130.Ifyourdatabasecompatibilitylevelislowerthan130,SQLServercan'tfindandruntheO......
  • js中的bigint类型转化为json字符串时报无法序列化的问题
    网上查了一下,解决这个问题的思路就是将bigint类型的数据转化为字符串,这样就能正确转化为json字符串了。对于一个是bigint的变量,直接使用toString方法就可以转化为字符串了,但是bigint变量在一个对象中,那么我们就需要一个更加通用的方法,网上看到一个很好的封装好的方法,如下。expor......
  • [转]js 正则相关的两个方法match和exec的区别
    原文地址:jsmatch和exec的区别_javascriptmatchexec-CSDN博客一、使用方法不同exec()是正则对象的方法;reg.exec(str);match()是字符串的正则表达方法;str.match(reg);二、返回结果不同w3cSchool是这么说的:match()方法将检索字符串stringObject,以找到一个或多个与regex......
  • Java开发者的Python进修指南:JSON利器之官方json库、demjson和orjson的实用指南
    JSONJSON作为目前最流行的传输格式,在Python中也有相应的实现方式。由于JSON格式的文本可以跨平台并且简单易用,因此被广泛传播。因此,我们今天的主要讨论内容是如何熟练地应用Python的JSON库来处理将JSON映射到文本,以及如何从文本映射到对象中。现在,让我们开始探讨这个话题。官方j......
  • 某建筑网页js逆向分析过程(有坑)
    某建筑网页js逆向分析过程(有坑)https://blog.csdn.net/ak_bingbing/article/details/134399056 acmakb于2023-11-1414:56:27发布阅读量709收藏点赞数4分类专栏:网络爬虫文章标签:javascript爬虫python版权网络爬虫专栏收录该内容20篇文章0订阅订阅专栏某建筑网......
  • crypto-js 加密、解密使用方法
    crypto-js加密、解密使用方法爱宇阳于2021-12-1015:35:32发布阅读量5.9w收藏201点赞数38分类专栏:VueJavaScriptHTML5文章标签:javascript前端vue.js版权华为云开发者联盟该内容已被华为云开发者联盟社区收录加入社区Vue同时被3个专栏收录81篇文章9订阅订阅......
  • 快乐学Python,如何使用Python处理文件(csv、Excel、html)数据?
    在前面的文章中,我们了解了Python爬虫的一些内容。截止到现在,我们已经可以将需要的数据通过爬虫获取,并保存到CSV文件中。在有了数据集后,接下来我们就开始了解如何将数据集的内容加载到Python中。虽然在之前也有了解简单的读取csv数据。但是存在两个问题:只能读取csv文件,但数据分析......
  • 语音合成技术(深度学习方法简介)https://www.cnblogs.com/jacen789/p/14260194.html
    语音合成技术(深度学习方法简介)一、定义语音合成(Text-To-Speech,简称TTS),又称文语转换技术,是将文字信息转变为可以听得懂的、流利的语音输出的一种技术。其与我们比较熟悉的语音识别技术(AutomaticSpeechRecognition,简称ASR)目标相反。ASR是将声音转化为文字,类比于人类的耳朵;而TT......