2012-07-20 153 views
1

我的新ChromeApp有些麻烦。FileSystem API和Chrome扩展程序

所以..我已经开始使用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的回答。

回答

1

您需要使用media-src 'self' filesystem: CSP指令才能允许文件系统:URL('self'只包含直接位于您的扩展中的URL,不包含filesystem:的URL)。

+0

哦,你是对的。十分感谢! – 2012-07-22 23:28:24

0

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

如果没有,你正在使用manifest_version:2,那么“content_security_policy”设置为

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

见清单版本2 documentation

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

media-src : 'self'

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

+0

谢谢你的回答。我使用清单版本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版本..我会尽力,谢谢。 – 2012-07-20 11:19:48

+0

由于'unsafe-eval'选项不适用于此版本的清单([错误4201](http://code.google.com/p/gmaps-api-issues/)问题/细节?ID = 4201&可以= 5&colspec = ID%20Type%20Status%20Introduced%20Fixed%20Summary%20Stars%20ApiType%20Internal))。 'media-src'self''在第一个版本的清单中不起作用。 – 2012-07-20 12:24:22