`
鹤惊昆仑
  • 浏览: 229028 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用window.name实现跨域访问的基本步骤

阅读更多
比较详细的阐述参见:http://www.sitepen.com/blog/2008/07/22/windowname-transport/

实现起来基本步骤如下:
  • 创建一个iframe,把其src指向目标页面(提供web service的页面,该目标页面会把数据附加到这个iframe的window.name上,大小一般为2M,IE和firefox下可以大至32M左右;数据格式可以自定义,如json字符串);
  • 监听iframe的onload事件,在此事件中立即设置这个iframe的src指向本地域的某个页面,由本地域的这个页面读取iframe的window.name。
  • 获取数据以后销毁这个iframe,释放内存;这也保证了安全(不被其他域frame js访问)。

总结起来即:iframe的src属性由外域转向本地域,跨域数据即由iframe的window.name从外域传递到本地域。这个就巧妙地绕过了浏览器的跨域访问限制,但同时它又是安全操作。
0
0
分享到:
评论

相关推荐

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

    window.name 解决跨域问题的文档 window.name 传输技术是 Thomas Frank 发明的,旨在解决 cookie 的一些劣势,例如每个域名 4 x 20 Kb 的限制、数据只能是字符串、设置和获取 cookie 语法的复杂等等。后来,Kris ...

    完美解决iframe跨域问题

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

    asp.net 弹出窗口

    - `name`:新窗口的名称,可以用于后续通过`window.name`访问该窗口。 - `features`:一个包含窗口特性(如宽度、高度、位置等)的字符串。 在ASP.NET中,我们通常会在客户端的按钮点击事件或其他事件处理中调用`...

    Laya和iframe通信.zip

    另一种可能的非`addEventListener`监听通信方式是利用`window.name`属性。当iframe加载新的URL时,`window.name`的值不会改变,所以可以作为跨域存储信息的媒介。Laya可以在加载iframe后设置`name`,然后在iframe...

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

    其基本原理是通过iframe跨域加载一个页面,该页面加载后,会被设置成另外一个域的内容,然后通过设置iframe的location为空,来触发iframe的onload事件,最后通过读取iframe的window.name属性来获取数据。 具体步骤...

    JS获取iframe内容【简化版】

    - 在进行跨域访问时需要注意同源策略限制。即主页面与iframe页面必须位于相同的域名下,否则无法访问其内容。 - 如果iframe页面还未完全加载完成就尝试获取其内容,则可能获取不到预期的结果。因此,需要确保...

    javaScript跨域通信

    由于浏览器的同源策略,一个域名下的JavaScript无法直接访问或操作不同域名下的资源,这就需要我们采用特定的方法来实现跨域通信。在这个话题中,我们将深入探讨如何克服这一限制,并通过示例来解释具体的操作步骤。...

    Cross Iframe Trick:the Old New Thing

    6. **Flash或WebSocket**:在一些旧的浏览器中,可能需要依赖Flash或WebSocket来实现跨域通信,因为它们不受同源策略的约束。 标签“源码”和“工具”提示我们,可能在博客中会有具体的代码示例或推荐的工具来帮助...

    基于iframe的跨域与更新父窗体地址栏的解决方案.docx

    - `name`: 指定框架的名称,可用于JavaScript中通过`window.frames[name]`访问。 - `scrolling`: 控制框架内的滚动条显示,默认为`auto`。 - `src`: 指定内嵌页面的URL,支持页面地址或图片地址。 例如,要接入...

    Jquery中获取iframe的代码

    在父窗口中,可以使用`window.frames`数组来访问`iframe`,其中数组的索引或名称对应于`iframe`的`name`属性或`id`属性。例如,如果`iframe`的`id`是`iframeChild`,则可以通过`window.frames["iframeChild"]`来访问...

    FLASH弹出窗口

    确保Flash和JavaScript来自同一域名或通过CORS策略允许跨域访问。 2. **兼容性问题**: 不同浏览器可能对Flash的支持程度不一,确保你的代码在目标浏览器上运行正常。 3. **用户体验**: 弹窗可能会对用户造成干扰...

    IFrame跨域高度自适应实现代码

    通过以上步骤,我们就实现了跨域IFrame的高度自适应。这种方式虽然存在一定的局限性,比如不能兼容所有浏览器,但对大部分现代浏览器来说是可行的。在实际项目中,还需要根据具体的浏览器兼容性和安全性需求进行适当...

    ajax iframe上传.

    以下是使用AJAX和iframe实现文件上传的基本步骤: 1. **创建隐藏的iframe**:在HTML页面中创建一个隐藏的iframe元素,设置其`name`属性,例如`iframeUploader`。这个iframe将成为文件提交的目标。 ```html ...

    web javaScript 获取终端ip 获取本地ip 获取本机ip地址,403报错解决方案

    通过本文的介绍,相信读者已经掌握了如何利用 JavaScript 实现 AJAX 请求的基本框架,以及如何获取本地 IP 地址的方法。此外,还介绍了如何解决常见的 403 错误问题。这些技巧对于提高前端开发效率和解决实际工作中...

    2017前端面试题答案.pdf

    在JavaScript中,有多种跨域通信方式,包括JSONP(JSON with Padding,通过动态创建script标签实现跨域数据获取)、iframe(通过子窗口与父窗口的通信)、window.name(在页面刷新后仍能保留数据)、window.post...

    silverlight beta2 从入门到精通(8),与html或aspx页交互

    二、交互实现步骤 1. 在HTML/ASPX页面中嵌入Silverlight:使用`<object>`或`<embed>`标签将Silverlight控件嵌入页面,同时设置必要的属性,如source(指向XAP文件)和id(用于JavaScript访问)。 ```html ," type=...

    JSONP跨域请求实例详解

    3. **window.name:** 利用`window.name`属性可以在页面卸载后保持数据,实现跨页面通信。 4. **Script标签:** 类似JSONP,但返回的是任意JavaScript,而非JSON。 5. **XDomainRequest(IE8+):** Internet ...

    jquery 跨iframe拖拽

    如果IFrame是同一源,可以使用`window.parent`或`window.frames['iframeName']`来访问父IFrame或特定IFrame的窗口对象。若跨域,可以通过postMessage API进行安全的数据传递。在drop事件处理函数中,发送拖放元素的...

    文件上传,iframe跨域数据提交的实现

    以下是实现文件上传和跨域数据提交的步骤: 1. 创建一个JavaScript动态生成的form表单,确保其enctype属性设为"multipart/form-data",这是为了支持文件上传。同时,设置form的target属性为一个iframe的名称,以便...

Global site tag (gtag.js) - Google Analytics