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 相关文章推荐
node.js使用require()函数加载模块
Nov 26 Javascript
javascript实现带下拉子菜单的导航菜单效果
May 14 Javascript
js去除浏览器默认底图的方法
Jun 08 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
Dec 07 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
Mar 26 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
Aug 24 Javascript
jQuery表单对象属性过滤选择器实例详解
Sep 13 Javascript
js仿百度音乐全选操作
Jan 13 Javascript
vue-router跳转页面的方法
Feb 09 Javascript
最新Javascript程序员面试试题和解题方法
Nov 23 Javascript
vue的$http的get请求要加上params操作
Nov 12 Javascript
JS闭包原理及其使用场景解析
Dec 03 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
隐性调用php程序的方法
2009/03/09 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
php封装一个异常的处理类
2017/06/08 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
js友好的时间返回函数
2016/08/24 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
python下MySQLdb用法实例分析
2015/06/08 Python
Django在win10下的安装并创建工程
2017/11/20 Python
Python模块搜索路径代码详解
2018/01/29 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
大学生大二自我鉴定
2013/10/28 职场文书
外贸英语毕业生自荐信
2013/11/14 职场文书
2014年元旦感言
2014/03/06 职场文书
大学生个人求职信
2014/06/02 职场文书
标准毕业生自荐信
2014/06/24 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
自荐信怎么写
2015/03/04 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
Golang 对es的操作实例
2022/04/20 Golang
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android