Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

访问 DataURL 也算跨域?

  当使用Worker引用的目标是一个DataURL时Chrome就会抛出一个跨域安全错误。我觉得这个设计是不合理的,至少BlobURL都能够访问,为什么DataURL就不行?而且Firefox都没有这样奇怪的限制,话说DataURL直接分析URL就可以得到数据,存在任何越权问题吗?
<script>
var type="text/javascript";
var data="console.log(123);";
var blob=new Blob([data],{type:type});
new Worker(URL.createObjectURL(blob));
new Worker("data:"+type+","+data);
</script>
  测试于 Chrome37 Firefox31
Uncaught SecurityError: Failed to construct 'Worker': Script at 'data:text/javascript,console.log(123);' cannot be accessed from origin 'http://127.0.0.1'.

  对DataURL也做跨域安全限制简直了!而且Chrome不止一处对DataURL有这样的限制了,我记得以前在其它地方也遇到过这样的问题,只是当时没太在意而已,具体在哪些地方我也忘了。
  另外Worker相关规范中也对DataURL需要抛出跨域安全错误的情况排除了DataURL。也许是Chrome暂时没实现好吧,目前的解决办法是使用BlobURL代替,总之望Chrome早日修复吧。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^