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 相关文章推荐
innerHTML,outerHTML,innerTEXT三者之间的区别
Jan 28 Javascript
jquery实现奇偶行赋值不同css值
Feb 17 Javascript
jquery ajax提交整个表单元素的快捷办法
Mar 27 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
Dec 22 Javascript
javascript封装 Cookie 应用接口
Aug 07 Javascript
JS日期格式化之javascript Date format
Oct 01 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
Dec 03 Javascript
jQuery取得iframe中元素的常用方法详解
Jan 14 Javascript
使用ES6语法重构React代码详解
May 09 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
Nov 05 Javascript
JS数组的常用方法整理
Mar 31 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
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
微信小程序多张图片上传功能
2017/06/07 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
Python绘制KS曲线的实现方法
2018/08/13 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
对python周期性定时器的示例详解
2019/02/19 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
python 瀑布线指标编写实例
2020/06/03 Python
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
养殖行业的创业计划书
2014/01/05 职场文书
护士辞职信范文
2014/01/19 职场文书
趣味游戏活动方案
2014/02/07 职场文书
低碳生活倡议书
2014/04/14 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
融资合作协议书范本
2014/10/17 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
2014年度思想工作总结
2014/11/27 职场文书
小学校本教研总结
2015/08/13 职场文书
听课评课活动心得体会
2016/01/15 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python