iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >使用iframe和postMessage怎么实现页面跨域通信
  • 719
分享到

使用iframe和postMessage怎么实现页面跨域通信

2023-06-09 12:06:18 719人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关使用iframe和postMessage怎么实现页面跨域通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。通常情况下,对于两个不同页面的脚本,只有当执行它们的页面

这篇文章将为大家详细讲解有关使用iframe和postMessage怎么实现页面跨域通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

通常情况下,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https),端口号(443为Https的默认值),以及主机时,这两个脚本才能相互通信。而在实际项目开发过程中,经常会利用iframe在一个父页面中嵌入另外一个子页面,或者在一个父页面中弹出另一个页面,由于同源策略的限制,父子页面之间的脚本无法实现通信,而使用postMessage方法就实现了父子页面之间的跨域信息传递。

语法:

otherWindow.postMessage(message, targetOrigin, [transfer]);

otherWindow:其他页面的引用,例如,iframe的contentWindow属性,或者执行window.open返回的窗口对象。

message:将要传递到另一个页面的数据(可以不受限制的将数据对象安全的传送给目标窗口而无需自己序列化,原因是因为采用了结构化克隆算法)。

targetOrigin:通过窗口的origin属性来指定哪些窗口能接收到消息事件,其值可以是一个字符串"*"(表示无限制)或者一个Url。只有当目标窗口的协议、主机地址、端口号和targetOrigin完全匹配时,目标窗口才会收到message信息。为了防止信息泄露,通常情况下都会指定特定的url。

transfer:可选参数。

使用方法:

父页面:(url为http://www.b.com/main.html):

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>父页面</title></head><body>    <iframe id="child" src="http://www.a.com/iframepage.html"></iframe>    <script>        window.onload = function(){            document.getElementById("child").contentWindow.postMessage("主页面传递的消息","http://www.a.com/iframepage.html")        }        window.addEventListener('message', function(event){  //父获取子传递的消息            if(event.origin == "http://www.a.com"){                //可以在这里做一些逻辑操作            }        }, false)    </script></body></html>

子页面(url为http://www.a.com/iframepage.html)

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>子页面</title></head><body>    <div>这里是子页面</div>    <script>        window.addEventListener('message', function(event){           if(event.origin == "http://www.b.com"){                //可以在这里做一些操作                top.postMessage("子页面收到父页面传递来的消息", 'http://www.b.com/main.html')//子页面向父页面传递消息           }        }, false);    </script></body></html>

postMessage方法被调用时,会在所有页面脚本执行完毕之后像目标窗口派发一个 MessageEvent 消息,该MessageEvent消息有四个属性需要注意:

type:表示该message的类型

data:为postMessage的第一个参数

origin:表示调用postMessage方法窗口的源

source:记录调用postMessage方法的窗口对象

特别注意:
1.一定要等A页面嵌入的B页面加载完成之后,再进行postMessage跨域通信
2.一定要对origin做判断,去掉不是来自我们目标窗口的origin,防止来自其他origin的攻击

关于使用iframe和postMessage怎么实现页面跨域通信就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 使用iframe和postMessage怎么实现页面跨域通信

本文链接: https://www.lsjlt.com/news/255823.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用iframe和postMessage怎么实现页面跨域通信
    这篇文章将为大家详细讲解有关使用iframe和postMessage怎么实现页面跨域通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。通常情况下,对于两个不同页面的脚本,只有当执行它们的页面...
    99+
    2023-06-09
  • 使用postMessage怎么解决iframe跨域通信
    这篇文章将为大家详细讲解有关使用postMessage怎么解决iframe跨域通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。首先我们模拟场景,假设有两个不同源的页面,iframePage...
    99+
    2023-06-09
  • 使用postMessage怎么实现iframe跨域
    今天就跟大家聊聊有关使用postMessage怎么实现iframe跨域,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。postMessage是什么此处引用MDN关于postMessag...
    99+
    2023-06-09
  • 使用postMessage实现iframe跨域通信的示例代码
    1、父页面内容 <!DOCTYPE html> <html> <head> <meta charset="utf-8...
    99+
    2024-04-02
  • vue中iframe使用以及结合postMessage实现跨域通信
    目录使用场景需求iframe使用基本使用常用属性iframe高度自适应获取iframe的内容同域下获取父级/子级内容iframe跨域postMessage通信在vue中使用使用场景 ...
    99+
    2024-04-02
  • Vue怎么使用postMessage实现父子跨域通信
    这篇文章主要讲解了“Vue怎么使用postMessage实现父子跨域通信”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue怎么使用postMessage实现父子跨域通信”吧!一、跨域通信子...
    99+
    2023-07-04
  • Vue使用postMessage实现父子跨域通信
    目录一、跨域通信二、示例三、拓展阅读vue项目中postMessage的使用总结postMessage简介项目搭建一、跨域通信 1.子向父通信parent.html // 页面销毁前...
    99+
    2022-12-31
    Vue父子跨域通信 Vue postMessage Vue跨域通信 postMessage使用
  • html5怎么通过postMessage进行跨域通信
    本篇内容主要讲解“html5怎么通过postMessage进行跨域通信”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5怎么通过postMessage进行...
    99+
    2024-04-02
  • 如何利用iframe实现ajax跨域通信
    本篇内容介绍了“如何利用iframe实现ajax跨域通信”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在漫...
    99+
    2024-04-02
  • 使用iframe怎么实现跨域
    使用iframe怎么实现跨域?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为什么会跨域为了保证用户信息的安全,95年的时候Netscape公司引进了同源策略,里面的同源指的是三...
    99+
    2023-06-09
  • 怎么用kbone实现跨页面通信和跨页面数据共享
    本篇内容介绍了“怎么用kbone实现跨页面通信和跨页面数据共享”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • Vue中iframe怎么结合window.postMessage实现跨域通信
    这篇文章主要介绍“Vue中iframe怎么结合window.postMessage实现跨域通信”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue中iframe怎么结合window.postMess...
    99+
    2023-07-04
  • Vue中iframe结合window.postMessage实现跨域通信
    目录一、前言二、应用场景2.1 嵌入页面2.2 postMessage 实现父子页面通信2.3 子页面向父页面传值2.4父页面代码:一、前言 什么是iframe? iframe 元素...
    99+
    2022-12-31
    vue iframe 跨域通信 window.postMessage 跨域通信 vue跨域通信
  • 如何在html5中使用postMessage解决跨域通信
    本篇文章给大家分享的是有关如何在html5中使用postMessage解决跨域通信,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。postmessage解析HTML5提供了新型机...
    99+
    2023-06-09
  • js实现前端跨域postMessage的具体使用
    目录postMessage的使用方法发送消息接收消息在前端开发中,跨域是一个常见的问题,由于同源策略的限制,浏览器不允许在不同源的页面之间直接进行通信。解决跨域问题有多种方式,其中一...
    99+
    2023-05-17
    js postMessage js 前端跨域
  • 使用postMessage怎么实现iframe自适应高度
    这篇文章将为大家详细讲解有关使用postMessage怎么实现iframe自适应高度,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。index.html :<!DOCTYPE ...
    99+
    2023-06-09
  • HTML5中怎么利用postMessage实现Ajax跨域请求
    今天就跟大家聊聊有关HTML5中怎么利用postMessage实现Ajax跨域请求,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 常规的几...
    99+
    2024-04-02
  • Html5中怎么利用postMessage实现跨域消息传递
    Html5中怎么利用postMessage实现跨域消息传递,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、同源策略  &...
    99+
    2024-04-02
  • docker跨主机通信怎么实现
    要实现Docker跨主机通信,可以使用以下几种方法: 使用Docker的网络模式:可以使用Docker的overlay网络模式来...
    99+
    2023-10-27
    docker
  • webuploader通过在java中使用怎么实现跨域上传
    本篇文章给大家分享的是有关webuploader通过在java中使用怎么实现跨域上传,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。项目中使用webuploader进行文件上传,...
    99+
    2023-05-31
    java webuploader 跨域上传
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作