【问题标题】:FileSystem API & Chrome Extension文件系统 API 和 Chrome 扩展
【发布时间】:2012-07-23 07:30:26
【问题描述】:

我的新 ChromeApp 遇到了一些问题。

所以.. 我已经开始使用 JavaScript FileSystem API,所以我 用它来创建 mp3 文件(我的应用是一个 html5 播放器)。

FileSystem API 中的 FileEntry 对象提供了toURL() 方法 对于存储在文件系统中的文件。在 ChormeApps 这个方法 返回如下内容:

filesystem:chrome-extension://mhldgbaidgpagmimniipggmajbodaeco/persistent/cbd416046ae7a567d4629fc38ac80864.mp3

但是当我尝试在<audio> 标记中使用此网址作为src 属性的值时 我收到此错误:

Refused to load media from 'filesystem:chrome-extension://mhldgbaidgpagmimniipggmajbodaeco/persistent/cbd416046ae7a567d4629fc38ac80864.mp3' because of Content-Security-Policy.

所以我尝试使用带有相对路径的清晰名称

<audio src="cbd416046ae7a567d4629fc38ac80864.mp3" />

并使用 Chrome 应用程序根路径

<audio src="chrome-extension://mhldgbaidgpagmimniipggmajbodaeco/cbd416046ae7a567d4629fc38ac80864.mp3"/>

并带有“持久”文件夹

<audio src="chrome-extension://mhldgbaidgpagmimniipggmajbodaeco/persistent/cbd416046ae7a567d4629fc38ac80864.mp3"/>

在最后 3 个案例中,我遇到了 404 错误。 那么,如何启用从文件系统加载媒体? content_security_policypermissions 中的清单中的某些内容?还是有什么神奇的途径可以使用?

提前感谢您的回答。

更新: 我使用content_security_policy 指令:

default-src 'none'; style-src 'self' 'unsafe-inline'; img-src 'self' http://*.userapi.com; script-src 'self' 'unsafe-eval'; connect-src 'self' http://*.userapi.com http://vk.com http://last.fm http://ws.audioscrobbler.com; media-src 'self';

但是media-src 'self' 并没有带来所需的结果。我仍然遇到错误“拒绝加载媒体”。

更新 2: 我发现了一个丑陋的黑客来做我想做的事:media-src: 'self' * 完成了这项工作。但是,如果您对如何解决这个问题有一些想法,我会很高兴看到他们。

更新 3: 问题解决了。感谢Mihai Parparita 的回答。

【问题讨论】:

    标签: javascript html google-chrome google-chrome-extension


    【解决方案1】:

    您需要使用media-src 'self' filesystem: CSP 指令来允许文件系统:URL('self' 仅包含直接在您的扩展中的 URL,而不是包装的 filesystem: 的)。

    【讨论】:

      【解决方案2】:

      您的清单中是否有“content_security_policy”字符串。

      如果不是,您是否使用 manifest_version : 2,则“content_security_policy”设置为

      "script-src 'self'; object-src 'self';"

      查看清单版本 2 documentation

      您可能需要将媒体源添加到 CSP 字符串中。

      媒体源:“自我”

      MDN here 解释了内容安全政策。

      【讨论】:

      • 感谢您的回答。我使用清单版本 1 并具有此 CSP 字符串:"content_security_policy": "default-src 'self' 'unsafe-inline' 'unsafe-eval' http://*.userapi.com http://vk.com http://last.fm http://ws.audioscrobbler.com;"。也许我真的需要使用 2 版本.. 我会尝试,谢谢。
      • 清单版本 2 存在问题,因为 unsafe-eval 选项不适用于此版本的清单 (Bug 4201)。而media-src 'self' 在清单的第一个版本中不起作用。
      猜你喜欢
      • 2011-12-24
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      相关资源
      最近更新 更多