3

所以我在 Rackspace Cloud Files 上有一些视频文件,但由于我使用 HTML5 函数 (.toDataURL()) “SECURITY_ERR: DOM Exception 18”不断被抛出。当我在服务器上使用视频文件时,我的代码工作正常。

因此,我阅读了有关 CORS 并修改了我的 Rackspace Cloud Files 标头,如下所示:

access-control-allow-credentials:   true    
access-control-allow-origin:    [my domain here]    
access-control-allow-headers:   Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control
access-control-allow-methods:   OPTIONS, GET, POST  
access-control-expose-headers:  X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name
Content-Type:   video/webm

但是 DOM Exception 18 错误不断被抛出。我不知道问题是什么。我使用 web-sniffer.net 检查了我在 Rackspace 上的视频文件是否输出了 HTTP 标头,它们是,所以有什么问题,为什么它不起作用?

我已经在 IE9、Chrome 19、Safari 5.1.2 和 Aurora 12.0a2 上尝试过,它们在这些浏览器中都不起作用,所以我确定这不是浏览器问题。

我只需要摆脱这个 DOM Exception 18 错误。

4

1 回答 1

2

如果您的内容位于 CDN(或除当前主机之外的任何其他主机)上,则 toDataURL() 将不起作用,这是 CANVAS 元素的安全限制。

比较http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#security-with-canvas-elements了解禁止内容的详细信息

基本上,每当您想对画布中的图像或视频进行操作并保存结果时,您都必须将所有先前的内容都放在同一个域中。一种解决方法是在用户编辑时获取所需文件并临时保存它们

于 2012-04-16T14:55:26.487 回答