Canvas,iframe和Access-Control-Allow-Origin

时间:2013-08-15 02:53:11

标签: http iframe canvas processing.js cross-domain-policy

我对这个问题感到疯狂,并希望有一个解决方案或解决方法。 我在iframe中有一个画布,在不同的域中(出于安全原因)。此画布显示Processing.js动画/绘图。我需要允许画布加载位于同一域中的图像文件。

index.html的{​​p> iframe位于 domain.com

index.html的{​​p> canvas位于 sub.domain.com

现在我肯定知道:

  1. 画布可以加载/可视化远程图像,但无法访问远程图像数据(像素)。
  2. 画布可以完全访问同一域中的图像文件,除非它在iframe(!?)中播放。
  3. 设置Access-Control-Allow-Origin标头只允许访问其他域上的文件。
  4. 画布根本不支持/考虑Access-Control-Allow-Origin标题。
  5. 有没有办法绕过所有这些安全限制,只需在iframe中播放一个画布来加载图像文件?

1 个答案:

答案 0 :(得分:2)

我找到了解决问题的方法(看到没有人回答)。实际上我忘了一些东西......我在sandbox标签中使用了iframe属性,这就是问题所在。一旦删除,图像开始在画布中,至少在Firefox和Chrome中可访问(尚未测试IE)。无论如何,sandbox属性仍然有非常糟糕的支持,在跨域方案中可能完全没用。

因此。我可以使用正常的iframe(没有任何sandbox参数)确认将图像加载到canvas,iframe内,时出现问题,当且仅当该图片位于canvas页面的同一个域中。