FileSystem API& Chrome扩展程序

时间:2012-07-20 06:24:08

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

我的新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"/>

和“persistent”文件夹

<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的回答。

2 个答案:

答案 0 :(得分:1)

您需要使用media-src 'self' filesystem: CSP指令才能允许文件系统:网址('self'仅包含您的扩展程序中的网址,而不包含filesystem:个网址。

答案 1 :(得分:0)

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

如果没有,您使用的是manifest_version:2,那么“content_security_policy”设置为

  

“script-src'self'; object-src'self';”

请参阅清单版本2 documentation

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

  

media-src:'self'

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