文档章节

iframe下跨子域(或跨端口)传js对象问题

Arrowing
 Arrowing
发布于 2013/01/31 22:13
字数 402
阅读 310
收藏 0

最近在折腾socket.io,因为想用NODEJS做聊天室嵌套在PHP程序里

而NODEJS做的聊天室是用bootstrap做的,为了避免css和js混杂

所以采用iframe嵌套页面放进PHP程序里,因NODEJS程序和PHP监听不同端口,故产生跨域问题

因此,有了一系列问题,算对iframe跨域有个新的认识。

我的跨域方法是采用设置document.domain

本来挺简单的事儿,不过到IE下就有问题了。。。

对于IE,如果iframe节点是写在文件里的,也没什么问题。

但我的项目是采用DWZ做的,DWZ对于IE保存ajax浏览记录,会利用动态建立个空iframe来保存浏览记录

IE下对于动态添加iframe,会使得iframe和父窗口之间无法访问。。。

如果是一般的字符串数据吧,通过url传递参数也行的,但如果是要传递js对象的话,此方法就行不通了。

网上找了一下,发现这里的解决方法是。

在iframe动态建立并添加到文档后,设置其src:

iframe.src="javascript:void((function(){var d=document;d.open();d.domain='"+
 document.domain +"';d.write('');d.close();})());";
我的实际环境:

PHP程序:localhost:80 这里的document.domain='loclahost';

NODEJS程序:localhost:8888 这里的document.domain='loclahost';

然后在需要动态建立iframe的地方加上以上代码,就可以解决。

如在iframe中的NODEJS程序需要访问PHP程序里的JS对象,用parent.var(var为window下的变量)即可获取

记录下,以防再犯。


© 著作权归作者所有

共有 人打赏支持
Arrowing
粉丝 31
博文 18
码字总数 9769
作品 2
深圳
程序员
私信 提问
关于JavaScript“跨域”问题的总结

什么是同源策略? 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以...

红薯
2010/04/20
2.9K
5
JavaScript跨域总结与解决办法

什么是跨域 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。这里把涉及到跨域的一些问题简单地整理一下: ...

lovedreamland
2011/02/24
0
0
【Js】---JS中的跨域问题

一、什么是跨域? 1.定义:跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。但是一般情况下不能这么做,它是由浏览器的同源策略造...

LYQ1990
2018/03/07
0
0
网上讲javascript跨域最权威的一文(转)

什么是跨域 1、document.domain+iframe的设置 2、动态创建script 3、利用iframe和location.hash 4、window.name实现的跨域数据传输 5、使用HTML5 postMessage 6、利用flash 什么是跨域 Java...

顽Shi
2014/02/18
0
0
前端JavaScript实现跨域的方式(转)

这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,...

easonjim
2017/12/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Httpd 整合 Tomcat 步骤

环境:Tomcat8 + Httpd2.4 工作原理:借助于Tomcat的AJP连接器实现Apache与Tomcat的通信 配置步骤: 1. 配置httpd.conf 新增: Include conf/extra/mod_jk.conf 修改:添加 index.jsp <IfM...

ZeroneLove
昨天
1
0
Docker笔记3——容器命令(未写完,明天整理接着写)

未写完,明天整理接着写 新建并启动容器 docker run docker run [OPTIONS] IMAGE [COMMEND] [ARG...] OPTIONS: --name=[容器新名字] :为容器指定一个名称 -d:后台运行容器,并返回容器ID,...

HappyBKs
昨天
1
0
2018个人年终总结

感谢领导的信任和指导,新的一年获得了很多成长和提高,改掉了很多不好的习惯。 在这一年里,我在领导的帮助下,主要完成了以下功能: 1、完成上海银行版本投资营销相关功能的开发。 2、完成车...

万山红遍
昨天
9
0
保密工作与linux系统的发展

保密工作从性质上可以分成商业方面的保密和国家安全方面的保密。由于自己从事的是IT方面的工作,工作中必然会接触涉及到计算机信息方面的相关文件。加上单位已近通过武器装备科研生产单位二级...

linux-tao
昨天
2
0
Spark共享变量

概述 Spark程序的大部分操作都是RDD操作,通过传入函数给RDD操作函数来计算。这些函数在不同的节点上并发执行,但每个内部的变量有不同的作用域,不能相互访问,所以有时会不太方便,Spark提...

仟昭
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部