【问题标题】:HTML5 Canvas - How does the origin-clean flag get set to false?HTML5 Canvas - origin-clean 标志如何设置为 false?
【发布时间】:2011-06-26 17:41:18
【问题描述】:

我开始使用 HTML5 Canvas 和 Video,但一直遇到这个问题:我尝试演示和实验,但除非我将它们上传到我的 Web 服务器,否则我无法查看它们。目前这并没有造成很大的问题,因为我正在处理相对较小的文件,但我实际上正在准备一个更大的项目,这个问题很快就会变得非常不方便。而且我只想弄清楚我的事实。我一直在使用我自己创建的视频和演示中的视频。我使用的是我多年前编码的视频,我使用的是在我的代码中使用它们之前一分钟编码的视频。结果总是一样的,使用 HTML5 Video 容器有效,在 Canvas 中使用视频无效,Canvas 只是不显示任何视频(除非像我提到的那样,我将它们上传到服务器)。

这是我目前找到的信息:

http://html5doctor.com/video-canvas-magic/

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#security-with-canvas-elements

(还有一点关于w3的信息,但我不能发布两个以上的链接)

据我了解,我的画布肯定被污染了,而且我的文件似乎不是“来源干净”,但这是我所能弄清楚的。我不明白为什么。

有没有人对此有更多了解并能解释它是如何以及为什么起作用的?

【问题讨论】:

    标签: html video canvas cross-domain


    【解决方案1】:

    在浏览器中从http:// 加载的任何内容和从file:// URI 加载的任何内容之间都有严格的区分。这实际上非常明智,否则您从网络加载的随机页面将能够从您的硬盘读取文件。 apply to file:// URIs themselves 有几个额外的限制,同样这些限制是为了不让你从网上下载的文件免费运行你的硬盘。

    话虽如此,如果您的 HTML 文件和视频都位于硬盘驱动器上的同一目录中,那么一切都应该可以正常工作,因为所有这些条件都应该满足。

    如果您仍然遇到问题,本地开发的一种有用方法是使用轻量级 Web 服务器。我个人使用Python's SimpleHTTPServer,因为它已经安装在我的机器上,但还有很多其他的 - 通常是内置的 Web 开发框架(例如 Ruby on Rails)。

    【讨论】:

    • 谢谢。在过去的 1-2 个月中,我创建了几个演示,有趣的是,有些视频演示无需上传即可工作,而有些则不能。大多数时候,我使用相同的视频,有时是新转换为不同格式,有时是旧格式。我仍然无法弄清楚我的浏览器何时接受它们以及为什么有时它们不接受。但如果我的最终项目遇到这个问题,我会听从你的建议。
    • 对于 file:// URL,除非路径相同,否则源始终被视为不同。即使所有内容都在同一个目录中。
    • "对于 file:// URL,除非路径相同,否则源始终被视为不同。"这是不正确的。实际规则因浏览器和浏览器版本而异;例如,请参阅 developer.mozilla.org/En/Same-origin_policy_for_file%3a_URIs 了解最新版本的 Firefox。
    猜你喜欢
    • 2015-03-13
    • 2013-09-17
    • 2012-02-28
    • 2011-10-27
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多