`
mutongwu
  • 浏览: 449822 次
  • 性别: 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 传输技术是 Thomas Frank 发明的,旨在解决 cookie 的一些劣势,例如每个域名 4 x 20 Kb 的限制、数据只能是字符串、设置和获取 cookie 语法的复杂等等。后来,Kris ...

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

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

    跨域问题 之 window.name

    标题提到的“跨域问题之window.name”是指在处理跨域通信时,开发者利用`window.name`属性来传递数据的一种策略。这种技术主要应用于iframe之间的通信,因为浏览器的同源策略限制了不同源的页面直接交互,但`window....

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

    在实际应用中,需要注意的是,使用window.name进行跨域数据传输时,需要确保数据传输过程中,iframe的src属性总是指向与应用页面同域的页面,这样才能安全地读取window.name中的数据。 总结而言,window.name是一个...

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

    JavaScript中的`window.name`属性是一个独特且强大的工具,尤其在处理跨域通信时。它不受同源策略的限制,可以在不同页面甚至不同域名之间保持其值。这是因为`window.name`的值在页面重载或导航至其他URL时仍然保留...

    windowName跨域详解.pdf

    通过proxy函数封装的window.name跨域技术,可以在a.html页面上访问到b.html页面的数据,即便它们运行在不同的域下。在该案例中,通过创建一个iframe来加载目标页面,并在加载完成后,将iframe重定向到同源页面,从而...

    javascript 打开页面window.location和window.open的区别.docx

    - **跨域限制**:使用 `window.location` 或 `window.open` 时需要注意同源策略,确保不会违反跨域限制。 #### 七、总结 综上所述,`window.location` 和 `window.open` 在JavaScript中都扮演着重要的角色,但在...

    window.open打开新窗口参数设置

    var newWindow = window.open(url, name, features, replace); ``` - **url**:必需参数,字符串类型,表示新窗口中要加载的文档的URL。 - **name**:可选参数,字符串类型,指定新窗口的名字,这个名称可以用来与`...

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

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

    js弹窗并返回值(window.open方式)

    这个名称可以用于后续的引用,如`window.name`,或者在`window.open`中重用窗口。 - `features`: 可选参数,一个描述新窗口特性的字符串,比如宽度、高度、位置等。也可以包含像`scrollbars=yes`这样的选项来控制...

    完美解决iframe跨域问题

    **三、window.name跨域通信详解** 1. **原理**:`window.name`不受同源策略限制,可以在任何页面中读写,即使页面被刷新或导航至其他URL,`window.name`的值依然保留。因此,可以利用这一点在父页面和iframe之间...

    name-storage:通过 window.name 存储

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

    window.open父子窗口传值问题

    var newWindow = window.open(url, name, features); ``` - `url`: 子窗口要加载的URL。 - `name`: 窗口的名字,可以用于后续引用。 - `features`: 一个字符串,包含新窗口的尺寸、位置和其他特性。 在Tomcat...

    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的...

    window.name代替cookie的实现代码

    然而,在某些情况下,由于Cookie的限制(如大小、数量以及跨域问题),开发者可能会寻找替代方案,`window.name`属性就是其中之一。`window.name`是一个特殊属性,它可以存储任意字符串,且在页面刷新或关闭后仍能...

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

    这一特性使得`window.name`成为跨域数据传输的一种方法。下面我们将通过实例来分析如何利用`window.name`实现跨域通信。 首先,假设我们有两个网站,`www.a.com`和`www.b.com`,目标是在`www.a.com/a.html`中获取`...

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

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

    Window.ShowModalDialog使用手册

    - 对于跨域的情况,这两个方法无法使用,因为它们受到同源策略的限制。 #### 六、总结 `window.showModalDialog()` 和 `window.showModelessDialog()` 提供了在网页中创建模态或非模态对话框的能力,但需要注意的是...

Global site tag (gtag.js) - Google Analytics