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 相关文章推荐
jquery eval解析JSON中的注意点介绍
Aug 23 Javascript
浅析JavaScript中的类型和对象
Nov 29 Javascript
JavaScript将页面表格导出为Excel的具体实现
Dec 27 Javascript
基于vuejs实现一个todolist项目
Apr 11 Javascript
JS库之Particles.js中文开发手册及参数详解
Sep 13 Javascript
angularJS自定义directive之带参方法传递详解
Oct 09 Javascript
QRCode.js二维码生成并能长按识别
Oct 16 Javascript
vue-router beforeEach跳转路由验证用户登录状态
Dec 26 Javascript
JS用最简单的方法实现四舍五入
Aug 27 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
Dec 12 Javascript
原生js实现五子棋游戏
May 28 Javascript
原生JS实现拖拽效果
Dec 04 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
怎样在UNIX系统下安装php3
2006/10/09 PHP
php 中文字符入库或显示乱码问题的解决方法
2010/04/12 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
javascript add event remove event
2008/04/07 Javascript
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
python获取网页状态码示例
2014/03/30 Python
Python-嵌套列表list的全面解析
2016/06/08 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
python如何统计代码运行的时长
2019/07/24 Python
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
信用社员工先进事迹材料
2014/02/04 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
2016年寒假生活小结
2015/10/10 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技