在使用try catch处理iframe跨域产生的异常时,chrome和safari浏览器似乎不能正常运作:他们直接抛出了错误而没有抛出可供JS截获的异常。这里有个简单的测试页面:IE、火狐弹出”hello world”,而chrome,safari,opera毫无反应。
以下是小段测试代码(刻意修改domain,让父页面和子页面为不同域页面):
1.父页面代码:
2.子页面代码:
以上代码目的是尝试在访问异常时动态修改domain达到顺利访问,但webkit内核浏览器粗暴地报错而非抛出可截获的异常,其他浏览器均如期运行。
chrome错误信息:
据了解,采用此类try catch方式做安全可行性判断的并不只是个别现象,如DOJO
再如FCKeditor
还有很多网友的反馈:chrome bug report
以上代码在chrome,safari,opera均不适用。
从webkit开发人员的讨论消息中看到,他们承认这个问题但并不情愿去改正,holly shit!
延伸阅读
- html5 security location
- webkit dev lists