使用 html5 postMessage 实现跨域】的更多相关文章

[转]html5: postMessage解决跨域和跨页面通信的问题 平时做web开发的时候关于消息传递,除了客户端与服务器传值,还有几个经常会遇到的问题: 多窗口之间消息传递(newWin = window.open(..)); 页面与嵌套的iframe消息传递 postMessage方法 postMessage是html5引入的API可以更方便.有效.安全的解决这些问题.postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档.多窗口.跨域消息传递. p…
一.同源策略 要理解跨域,我们首先要知道什么是同源策略.百度百科上这样定义同源策略:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现. 何谓同源:如果两个URL的域名.协议.端口相同,则表示他们同源. 浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读…
一些麻烦事儿 平时做web开发的时候关于消息传递,除了客户端与服务器传值还有几个经常会遇到的问题 1.页面和其打开的新窗口的数据传递 2.多窗口之间消息传递 3.页面与嵌套的iframe消息传递 4.上面三个问题的跨域数据传递 postMessage() 这些问题都有一些解决办法,但html5引入的message的API可以更方便.有效.安全的解决这些难题.postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档.多窗口.跨域消息传递. postMessag…
原文:http://www.cnblogs.com/dolphinX/p/3464056.html 一些麻烦事儿 平时做web开发的时候关于消息传递,除了客户端与服务器传值还有几个经常会遇到的问题 1.页面和其打开的新窗口的数据传递 2.多窗口之间消息传递 3.页面与嵌套的iframe消息传递 4.上面三个问题的跨域数据传递 postMessage() 这些问题都有一些解决办法,但html5引入的message的API可以更方便.有效.安全的解决这些难题.postMessage()方法允许来自不…
仅做学习使用,原文链接:http://www.cnblogs.com/dolphinX/p/3464056.html 一些麻烦事儿 平时做web开发的时候关于消息传递,除了客户端与服务器传值还有几个经常会遇到的问题 1.页面和其打开的新窗口的数据传递 2.多窗口之间消息传递 3.页面与嵌套的iframe消息传递 4.上面三个问题的跨域数据传递 postMessage() 这些问题都有一些解决办法,但html5引入的message的API可以更方便.有效.安全的解决这些难题.postMessage…
效果图 postmessage解析 HTML5提供了新型机制PostMessage实现安全的跨源通信. 语法 otherWindow.postMessage(message, targetOrigin, [transfer]); otherWindow: 其他窗口的一个引用, 比如IFRAME的contentWindow属性, 执行, window.open返回的窗口对象. message: 将要发送到其他窗口的数据. targetOrigin: 通过窗口的origin属性来指定哪些窗口能接收到…
英文原文 中文翻译 因为web的安全机制,浏览器的同源策略.在不同域之间做数据交换就会涉及到跨域.A域如果要实现向B域发关消息,多多少少要有对B域有一定控制权,最起码人家B域要接收你的消息啊. 最近发现几个内容不错.结构固定.定时更新的网站,于是想在浏览这些内容的同时,直接转到我的博客里来.但因为一来要调整部分内容,二来对方站不让爬(我的爬虫技巧也是很一般).就想着写个油猴子脚本把内容发到我的网站上. 很快我就写好了接收接口,接下来就是跨域发送消息了.我第一个想到的就是iframe的方式.当然也…
<!doctype html> <html> <head> <title>Document A</title> <meta charset="utf-8"> </head> <body> <iframe src="http://remote-domain.com:8080/document-B.html" id="zino_iframe">…
使用iframe+postMessage解决跨域问题,首先来过一遍其中的原理咯 原理: 发送方使用postMessage方法向接收方推送消息,第一个参数为推送的内容,第二个参数是允许被访问的域名: 接收方通过监听message的方法接收数据. 实现跨域就需要有两个不同源的服务器咯 我在本地开启了两个不同端口的tomcat:(以下是我的文件路劲) ①tomcat/webapps/iframe/parent.html(端口号8088) ②tomcat1/webapps/iframe/child.ht…
解决跨域问题的方法有很多,如:图像ping(简单).jsonp(缺点是不能实现跨域post).CROS(CORS的本质让服务器通过新增响应头Access-Control-Allow-Origin,通过HTTP方式来实现资源共享,让每个请求的服务直接返回资源.它使用了HTTP交互方式来确定请求源是否有资格请求该资源,并且通过设置HTTP Header来控制访问资源的权限.缺点也是兼容性). html5中的postMessage和onmessage可以方便的实现跨域post.写个例子,实现windo…
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp77   HTML5的window.postMessage简述 postMessage是html为了解决跨域通信,特别引入的一个新的API,目前支持这个API的浏览器有:Firefox, IE8+, Opera, Safari, Chrome.postMessage允许页面中的多个iframe/window的通信,postMessage也可以实现ajax直接跨域,不通过服…
window.postMessage的功能是允许程序员跨域在两个窗口/frames间发送数据信息.基本上,它就像是跨域的AJAX,但不是浏览器跟服务器之间交互,而是在两个客户端之间通信.让我们来看一下window.postMessage是如何工作的.除了IE6.IE7之外的所有浏览器都支持这个功能.…
最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的整理思路,写到博客里还能做个备忘. 1) 跨域通讯 现在做企业项目,前端很不自然的会大量使用iframe标签,我以前在文章里提到iframe是一个效率极其低下的标签,但是如果项目没有什么性能的苛求,使用iframe还是非常的方便的. 使用iframe经常碰到父子窗体通讯的问题,我们看看下面的代码:…
JavaScript 跨域方式实现方式有很多,之前,一篇文章中提到了 JSONP 形式实现跨域.本文将介绍 HTML5 新增的 api 实现跨域:window.postMessage . 1 otherWindow.postMessage(message, targetOrigin); 2 3 otherWindow 4 其他窗口的一个引用,比如iframe的contentWindow属性.执行window.open返回的窗口对象.或者是命名过或数值索引的window.frames. 5 6 m…
JavaScript由于同源策略的限制,跨域通信一直是棘手的问题.当然解决方案也有很多: document.domain+iframe的设置,应用于主域相同而子域不同: 利用iframe和location.hash,数据直接暴露在了url中,数据容量和类型都有限 Flash LocalConnection, 对象可在一个 SWF 文件中或多个 SWF 文件间进行通信, 只要在同一客户端就行,跨应用程序, 可以跨域. window.name 保存数据以及跨域 iframe 静态代理动态传输方案,充…
原文地址:HTML5′s window.postMessage API 在线示例:Using HTML5's window.postMessage(请打开控制台看日志) 原文日期: 2010年09月03日 翻译日期: 2013年08月24日 我写了一个 MooTools 的插件"PostMessager"来封装window.postMessage,你可以点击这里下载! HTML5 的  window.postMessage 接口API 还没有多少人了解.  window.postMes…
平时做web开发的时候关于消息传递,除了客户端与服务器传值还有几个经常会遇到的问题 页面和其打开的新窗口的数据传递 页面与嵌套的iframe消息传递 这些问题都有一些解决办法,但html5引入的message的API可以更方便.有效.安全的解决这些难题. postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档.多窗口.跨域消息传递. 语法 otherWindow.postMessage(message, targetOrigin, [transfer]);…
https://www.cnblogs.com/dorothyorsusie/p/6178599.html //iframe传参给父级页面 function give_info(){ console.log("触发事件"); window.parent.postMessage(1,'*'); } //接收值window.addEventListener('message',function(e){ var color=e.data; document.getElementById('c…
一.h5 postMessage node http-server配置服务器 有关配置:请参考我的http://www.cnblogs.com/leee/p/5502727.html 我把文件夹a配置成http://192.168.1.100:8000 文件夹b配置成http://192.168.1.100:7000 父页面获取iframe两种方式 1,window.frames["goalNameFrame"] 这个goalNameFrame是iframe的name值 2,goalF…
在实际项目开发中可能会碰到在 a.com 页面中嵌套 b.com 页面,这时第一反应是使用 iframe,但是产品又提出在 a.com 中操作,b.com 中进行显示,或者相反. 1.postMessage   postMessage方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档.多窗口.跨域消息传递. 语法: otherWindow.postMessage(message, targetOrigin, [transfer]); otherWindow:其他窗口的引用,如…
在iframe跨域引用高度自适应这块写的js方式都试了不管用,最终使用的是window.postMessage() 跨域获取高度 传递信息 1.首先,在主页面上使用iframe引入子页面:也就是A.html页面引入B.html页面,下面看看A.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head>…
1.XMLHttpRequest升级版已经实现了跨域请求.不过需要在后台设置:header("Access-Control-Allow-Origin:http://www.a.com");表示某个域下允许跨域访问. 2.IE:需要使用XDomainRequest().同样需要在后台设置:response.addHeader("Access-Control-Allow-Origin","*"); 3.如果后台语言为java的话,需要自己写一个Cro…
window.postMessage() 方法可以安全地实现跨源通信.通常,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https), 端口号(443为https的默认值),以及主机  (两个页面的模数 Document.domain设置为相同的值) 时,这两个脚本才能相互通信.window.postMessage()  方法提供了一种受控机制来规避此限制,只要正确的使用,这种方法就很安全. otherWindow.postMessage(message, target…
简单记录一下 postMessage ,证明我来过, 我搞过(frame框架), 以后还能有个解决方法好去度娘: 1.发送消息 postMessage('test', 'http://localhost'); 2.接收消息 window.addEventListener('message', function (event) { console.log(event) }, false);…
参考资料1:[http://www.cnblogs.com/dolphinX/p/3464056.html] 参考资料2:[https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage]…
一.跨源通信概述 源:协议.端口号(https默认值433).主机域名(document.domain) 作用:向目标窗口派发MessageEvent消息(四个属性) 兼容参考 MessageEvent四个属性: 1.message(类型) 2.data(window.postMessage的第一个参数) 3.origin(调用postMessage时页面的当前状态) 4.source(调用postMessage的窗口信息) 二.postMessage语法: otherWindow.postMe…
这里接上篇:js中各种跨域问题实战小结(一) 后面继续学习的过程中,对上面第一篇有稍作休整.下面继续第二部分: -->5.利用iframe和location.hash -->6.window.name跨域实现 利用iframe和location.hash实现跨域 想必有很多人像我之前一样,或许只知道上面文中所说的那几种方法.所以,我刚了解到可以用iframe和location.hash来实现跨域的时候,我会想,为什么他们可以实现.iframe是什么,有什么特性,location.hash是什么…
什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略是怎么回事了:javascript的同源策略 .这里更加细致详细的总结了为什么要跨域:javascript跨域之  什么是跨域?为什么跨域? 于是当我们想某些特定的功能的时候,实现合理的跨域请求就显得比较重要了.我努力通过自己动手,自己模拟环境来切实的尝试跨域是怎么回事. 第一部分总结如下: -->…
什么是跨域?为什么要实现跨域呢?   这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略是怎么回事了:javascript的同源策略   于是当我们想某些特定的功能的时候,实现合理的跨域请求就显得比较重要了.       -->1.原生Ajax对象xhr的跨域   -->2.简单jsonp   -->3.图像Ping   -->4.document.domain+if…
前言 之前简单讲解了利用script标签(jsonp)以及iframe标签(window.name.location.hash)来跨域交换数据,今天我们来学习一下HTML5的api,利用postMessage来跨域交换数据.和前面一些方式交换数据方式不同的是,利用postMessage不能和服务端交换数据,只能在两个窗口(iframe)之间交换数据,废话不多说,我们直接进入实战. 实战postMessage overview 上文中说,postMessage是用于两个窗口(iframe)之间交换…