同源策略,google chrome,canvas和file://scheme



当试图从预先绘制图像的画布中读取图像数据时,Google Chrome会引发一个跨原点异常(抱怨画布被"污染")。目录结构如下。

/html/base/path
|-- index.html         contains the canvas element, references the script.js
|-- script.js          loads imgs/images.jpg, paints and queries the canvas
`-- imgs/image.jpg

只有当页面由文件加载时才会发生错误://scheme。

我想知道这是否是Chrome的错误。如果没有,适用哪些规则?有什么变通办法吗?

不幸的是,离线观看是最终的用例,因此

  • file://scheme是必不可少的
  • 在目标系统处不存在对浏览器设置的控制

file://加载的文件总是被认为来自不同的域,这是一个无法绕过的功能。

根据HTML5规范对起源的定义:

如果文档是以其他方式获得的(例如数据:URL由用户键入,使用createDocument()创建的DocumentAPI等)当文档已创建。

如果加载协议为file:,则可以显示但不能分析或更改从另一个文件读取的数据。


I在您的情况下可能会做什么(如果我从您的评论中正确理解的话):我会写一个小程序,可以在外部存储介质中发布,它既可以启动http服务器,也可以启动web浏览器I可以在Go中完成(简单地用两三行代码制作http服务器,linux、Mac和Windows的本地编译,使您能够提供所有需要的可执行文件),但也可以使用其他语言。

给他们指示,让他们用标志--allow-file-access-from-files启动chrome。

除此之外,他们还需要运行一个本地服务器实例来避免出现错误。

这是一种新的Chromium安全策略。你不能做任何事情,除了禁用这个政策如上所述由epascarello。明星这个bug,他们有点希望放松这个规则。

也请检查此答案。

相关内容

  • 没有找到相关文章

最新更新