错误原因是因为父窗口与子窗口的域名不同,即便同一站点下,也需要写全引用地址:如同是xxx.com下的页面<iframe id="iframe_xxxx" name="iframe_xxxx" src ="/sub.html" frameborder="0" height="300" width="1000"></iframe>与<iframe id="iframe_xxxx" name="iframe_xxxx"
src ="http://www.xxx.com/sub.html" frameborder="0" height="300" width="1000"></iframe>是有区别的
笔者在做第三方集成时,使用了<iframe>,通过子页面的js来调整父页面的元素时,会出现访问不到的情况。
错误信息:Permission denied to access property 'document'
造成这个问题的原因是js不属于同一个域,由于某些浏览器的安全问题,所以被禁止访问了。
参考资料:https://developer.mozilla.org/Cn/JavaScript的同源策略(如不能访问,改https为http)
文件:http://sub.xxx.com/index.html
<!doctype html>
<html>
<head>
...
</head>
<body>
...
<iframe id="iframe_xxxx" name="iframe_xxxx" src ="http://www.xxx.com/sub.html" frameborder="0" height="300" width="1000"></iframe>
</body>
</html>
文件:http://www.xxx.com/sub.html
<!doctype html>
<html>
<head>
<script type="text/javascript">
//设置域信息
document.domain = 'xxx.com';
//设置父级页面引用自身的iframe高度
function setHeight(){
//判断是否为顶级页面
if(window.top!=window.self){
parent.document.getElementById('iframe_xxxx').height=document.body.scrollHeight+20
}
}
</script>
</head>
<body onload="setHeight();">
...
</body>
</html>
============================================================
这个问题是浏览器的安全机制造成的,
但是这种情况是同一域名下的一级子域名和二级子域名的区别,还是可以解决的。
解决方法就是把两个页面的域信息进行修改,变为相同的即可。
因为默认页面的域信息是包含二级域名的,这样设置可以统一使用顶级域名作为域信息。
<script type="text/javascript">
document.domain = 'xxx.com';
</script>
注:如果两个页面不属于同一个域名下,此方法不可行。强行设置js会报错。
补充:如果我们不确定引用的页面是否和被引用的页面所在域相同,可通过获取引用页面的url地址来判断
<script type="text/javascript">
//document.referrer - 可返回载入当前文档的文档的 URL。
$p_url = document.referrer;
</script>
//============================================================
参考:http://hi.baidu.com/eecc00/item/7c99477420e9f1345c1789e3
分享到:
相关推荐
cudnn8.9.0,适用于cuda12.X版本,Linux(centos、ubuntu)系统
在系统处于内网状态,无法使用yum进行下载时可以在这里进行下载解压,然后使用rpm -ivh进行安装
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http:///var/run/docker.sock/v1.40/images/json: dial unix /var/run/docker.sock: connect: ...
腾讯大数据JVM团队在Kona JDK开源项目中,坚持了一贯的兼容性、可靠性、安全、性能优化 等核心要素,同时,重点对ZGC等核心特性进行了生产级别改进
(1)错误提示:/bin/sh:./vsf_findlibs.sh: Permission denied 解决措施:chmod 775 ./vsf_findlibs.sh (2)错误提示:/lib/libcap.so.2:could not read symbols: File in wrong format 解决措施:修改vsffindlibs.sh...
ftp: setsockopt (ignored): Permission denied ---> PORT 192,168,10,144,210,113 200 PORT command successful. Consider using PASV. ---> LIST 425 Failed to establish connection. # 被动模式 $...
最近在开发环境 oracle 启动侦听的时候,出现了 TNS:permission denied 的问题,通过网上和咨询朋友,最终找到了解决方案,现在共享出来给有需要的朋友。 错误描述 [oracle@oracle ~]$ lsnrctl start LSNRCTL for ...
error :/usr/lib/libjvm.so: cannot restore segment prot after reloc: Permission denied . use the command: chcon -t textrel_shlib_t /usr/lib/libjvm.so 这是官方的提示 简单的做法是 setenforce 0 ok,java...
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission....
问题描述: 在使用git 进行提交时, 出现上面这个报错, 导致无法提交. 报错大致意思就是创建index.lock文件失败,因为已经存在index.lock文件了. index.lock文件是在.git下面, 而.git是一般是隐藏的, 那么可以通过以下...
主要介绍了Nginx报403 forbidden错误 (13: Permission denied)的解决办法,引起nginx 403 forbidden通常是三种情况:一是缺少索引文件,二是权限问题,三是SELinux状态。具体内容详情大家可以参考下本
torch-1.8.0-cp36-cp36m-linux_aarch64.whl jetson nx等使用,pytorch GPU版本
关于操作db文件导出Failed to pull selection: open failed: Permission denied问题的处理方法在遇到这个问题之前,你可能连data这个目录都打不开。。 对此,解决办法是去到安卓的adb目录\Android\sdk\platform-...
stack Error: EACCES: permission denied, mkdir ‘/Users/mac-pro/.nvm/versions/node/v10.16.0/lib/node_modules/webpack/node_modules/fsevents/build’ gyp ERR! System Darwin 19.3.0 gyp ERR! command “/...
1) 查询tftp软件包是否安装 rpm -qa | grep tftp ...Error code 0: Permission denied 出现这样的问题是因为selinux造成的,只要修改/etc/sysconfig/selinux中的SELINUX改成SELINUX=disabled,在重启就能解决。
出现这种问题, ①首先检查用户对应的角色名,然后看路径设置是否正确,有没有相关的权限,如果这些都没问题,然后就尝试下面的操作: ②重起FTP服务,最好从服务里面重启(不能根本解决); ③重新设置Server-U帐号和...
Delphi ftp 报Permission denied 问题.txt.Delphi ftp 报Permission denied 问题.txt
关键看这里吧(Permission denied), 一直没有看正方,以为是配置日志文件 找不到有问题,下面是部分异常 10:35:09,498 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - openFile(null,...
昨天一客户反应他的CuteFTP只能建文件夹,没法删除及上传文件