Webkit的跨域安全问题说明


Posted in Javascript onSeptember 13, 2011

这里有个简单的测试页面:IE、火狐弹出"hello world",而chrome,safari,opera毫无反应。
以下是小段测试代码(刻意修改domain,让父页面和子页面为不同域页面):
1.父页面代码:

<script> 
document.domain = "nunumick.me"; 
function doTest(){ 
alert('hello world'); 
} 
</script> 
<iframe src="http://www.nunumick.me/lab/x-domain/webkit-test.html"> 
</iframe>

2.子页面代码:
<script> 
try{ 
top.name; 
}catch(e){ 
document.domain = 'nunumick.me'; 
top.doTest(); 
} 
</script>

以上代码目的是尝试在访问异常时动态修改domain达到顺利访问,但webkit内核浏览器粗暴地报错而非抛出可截获的异常,其他浏览器均如期运行。

chrome错误信息:
Webkit的跨域安全问题说明

据了解,采用此类try catch方式做安全可行性判断的并不只是个别现象,如DOJO

try{ 
//see if we can access the iframe's location 
//without a permission denied error 
var iframeSearch = _getSegment(iframeLoc.href, "?"); 
//good, the iframe is same origin (no thrown exception) 
if(document.title != docTitle){ 
//sync title of main window with title of iframe. 
docTitle = this.iframe.document.title = document.title; 
} 
}catch(e){ 
//permission denied - server cannot be reached. 
ifrOffline = true; 
console.error("dojo.hash: Error adding history 
entry. Server unreachable."); 
}

再如FCKeditor
try{ 
if ( (/fcksource=true/i).test( window.top.location.search ) ) 
sFile = 'fckeditor.original.html' ; 
} 
catch (e) { /* Ignore it. Much probably we are insi 
de a FRAME where the "top" is in another domain (security error). */ }

还有很多网友的反馈:chrome bug report

以上代码在chrome,safari,opera均不适用。翻了一些资料,记录在此:
1.html5 security location
2.webkit dev lists
从webkit开发人员的讨论消息中看到,他们承认这个问题但并不情愿去改正,holly shit!

Javascript 相关文章推荐
麦鸡的TAB切换功能结合了javascript和css
Dec 17 Javascript
很可爱的输入框
Aug 03 Javascript
JS实现div居中示例
Apr 17 Javascript
jquery 隐藏与显示tr标签示例代码
Jun 06 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
Jul 17 Javascript
js面向对象之公有、私有、静态属性和方法详解
Apr 17 Javascript
javascript简单实现等比例缩小图片的方法
Jul 27 Javascript
如何判断出一个js对象是否一个dom对象
Nov 24 Javascript
JavaScript省市级联下拉菜单实例
Feb 14 Javascript
SpringMVC+bootstrap table实例详解
Jun 02 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
Mar 05 Javascript
vue中移动端调取本地的复制的文本方式
Jul 18 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 #Javascript
容易被忽略的JS脚本特性
Sep 13 #Javascript
Javascript学习笔记-详解in运算符
Sep 13 #Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
Sep 13 #Javascript
ie下动态加态js文件的方法
Sep 13 #Javascript
使用Json比用string返回数据更友好,也更面向对象一些
Sep 13 #Javascript
TextArea不支持maxlength的解决办法(jquery)
Sep 13 #Javascript
You might like
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
php中Snoopy类用法实例
2015/06/19 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
爬山算法简介和Python实现实例
2014/04/26 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
简单说说tomcat的配置
2013/05/28 面试题
介绍一下OSI七层模型
2012/07/03 面试题
自我评价范文
2013/12/22 职场文书
学生党支部先进事迹
2014/02/04 职场文书
党员干部公开承诺书
2014/03/26 职场文书
《老山界》教学反思
2014/04/08 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
小学运动会加油稿
2015/07/22 职场文书
银行求职信范文
2019/05/13 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
图解上海144收音机
2021/04/22 无线电
Java 超详细讲解hashCode方法
2022/04/07 Java/Android