`
mutongwu
  • 浏览: 438943 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

window.name 跨域

阅读更多
window.name跨域的基础是:iframe页面在其url改变的时候,不会改变name的数据,
从而通过proxy页面(与应用页面相同域名)的跳转,绕过跨域的限制。

name传输的数据,大小一般为2M,IE和firefox下可以大至32M左右。

CrossDomain  = {
	// 设置的代理文件
	proxy: 'http://shawn.a.com:1234/proxy.html',

	/**
	*@param {String} url 接口
	*@param {Function} callback 回调函数,可选。
	*/
	getData: function(url,callback){
		var state = 0, 
		iframe = document.createElement('iframe');
		iframe.id = "CrossDomainIfrme";
		function loadfn() {
		    if (state === 1) {
                        // 读取数据
		        callback && callback(iframe.contentWindow.name);
		        destroy();
		    } else if (state === 0) {
		        state = 1;
		        iframe.contentWindow.location = CrossDomain.proxy;    
		    }  
		}
		function destroy(){
			iframe.contentWindow.document.write('');
		    iframe.contentWindow.close();
		    document.body.removeChild(iframe);
		}
		iframe.src = url;
		if (iframe.attachEvent) {
		    iframe.attachEvent('onload', loadfn);
		} else {
		    iframe.onload  = loadfn;
		}
		document.body.appendChild(iframe);
	}

}



proxy.html 只是一个空页面


<!DOCTYPE html>
<html><head><title></title><meta charset="utf-8"></head><body></body></html>



获取数据的接口,需要返回一个页面,例如:

<!DOCTYPE html>
<html><head><title></title><meta charset="utf-8">
<script>
window.name = 'I set data!'; //这里把数据放到name里面
</script>
</head><body></body></html>

分享到:
评论

相关推荐

    window.name解决跨域问题的文档

    window.name解决跨域问题的文档,刚才网上发现的.也许有点作用

    利用window.name跨域解决方案Demo.rar

    本Demo实现了一个来自不同服务器的前端页面集成方案,页面间通过window窗口关系形成父子页面关系,跨域情况下父子页面间彼此看不见对方的DOM和js对象,无法直接进行数据交互。本方案从父页面到子页面数据传递采用url...

    javascript使用window.name解决跨域问题第1/2页

    后来 Kris Zyp 在此方法的基础上强化了 window.name 传输 ,并引入到了 Dojo (dojox.io.windowName),用来解决跨域数据传输问题。window.name 传输技术的基本原理和步骤为: name 在浏览器环境中是一个全局/window...

    跨域问题 之 window.name

    NULL 博文链接:https://yiminghe.iteye.com/blog/346796

    javascript跨域总结之window.name实现的跨域数据传输

    本文给大家介绍window.name实现的跨域数据传输,自己亲自实践了一下,真的非常好用,特此分享到脚本之家网站供大家参考

    window.name解决跨域数据传输问题

    原文:http://research.microsoft.com/~helenw/papers/subspace.pdfwindow.name 传输技术,原本是 Thomas Frank 用于解决 cookie 的一些劣势(每个域名 4 x 20 Kb 的限制、数据只能是字符串、设置和获取 cookie 语法...

    XSS_Bypass_Cookbook_ver_3.0.pdf

    4.1 window.name跨域 4.2 jquery工厂函数 4.3 使用短域名 5 构造无需交互的payload&绕过事件过滤 5.1 onerror/onload 事件 5.2 onfocus与autofocus 5.3 onblur与autofocus 5.4 标签的ontoggle事件 5.5 flash-xss的...

    name-storage:通过 window.name 存储

    技术上,nameStorage 使用 window.name 存储数据。数据的生存周期为窗口会话的生存周期,同一个窗口可以通过 nameStorage 共享数据。出生证明window.name 非常有用,但不可滥用。为了规范、简单便利、安全的使用 ...

    PHP下ajax跨域的解决方案之window.name实例分析

    本文实例讲述了PHP下ajax跨域的解决方案之window.name。分享给大家供大家参考,具体如下: 原理核心:window对象的name属性是一个很特别的属性,当该window的location变化,然后重新加载,它的name属性可以依然保持...

    「JavaScript」JS四种跨域方式详解

    三、使用window.name来进行跨域 window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name...

    JavaScript使用HTML5的window.postMessage实现跨域通信例子

    JavaScript由于同源策略的限制,跨域通信一直是棘手的问题。... window.name 保存数据以及跨域 iframe 静态代理动态传输方案,充分的运用了window.name因为页面的url改变而name不改变的特性。 各种方案

    awesome-namestorage:nameStorage 是类似 sessionStroage 的键值对数据存储工具,但是可以跨域

    nameStorage 是类似 sessionStroage 的键值对数据存储工具,但是可以跨域。 nameStorage 适用于同一窗口内跨页面数据存储与传递。 技术上,nameStorage 使用 window.name 存储数据。 数据的生存周期为窗口会话的生存...

    前端常见跨域解决方案(全).mht

    分享转载:前端常见跨域解决方案 1、 通过jsonp跨域 ...4、 window.name + iframe跨域 5、 postMessage跨域 6、 跨域资源共享(CORS) 7、 nginx代理跨域 8、 nodejs中间件代理跨域 9、 WebSocket协议跨域

    完美解决iframe跨域问题

    框架完美解决了iframe之间的跨域通讯。底层技术采用window.name转换代理实现

    cross-origin::cyclone: 跨域demo。CORS、JSONP、postMessage、websocket、document.domain、window.name、iframe等示例

    跨域demo集一个关于跨域的简单demo集合,适合入门学习跨域的。任何对初学者学习跨域有用的PR都会接受,谢谢!原理用node的web框架express在3000端口和3001端口分别开启一个静态服务器,在两个端口间进行跨域传输数据...

    Javascript跨域请求的4种解决方式

    解决方式: 一、window.name 1、 服务器返回 代码如下: [removed]window.name='{“id”:”3″, “name”:”leisure”}’;[removed] 2、定义一个iframe,添加onload事件 &lt;iframe id=”iframe1″ onload=”iLoad”...

Global site tag (gtag.js) - Google Analytics