2016-02-29 73 views
0

我试图从Chrome扩展中调用firebase api的set方法。 由于我在加载cdn中的firebase.js时遇到了问题,我决定下载它并将其包含在我的包中。 但现在我越来越:从Chrome扩展中调用firebase api

拒绝加载脚本 “https://mydomain.firebaseio.com/.lp?start=t&ser=323&cb=1&v=5” 因为它违反了以下内容安全策略指令: “默认-src的‘自我’的blob:文件系统:铬扩展 - 资源:”。 请注意,'script-src'没有明确设置,所以'default-src'是 用作回退。 (匿名函数)@ firebase241.js:168个 firebase241.js:168拒绝加载脚本

当火力脚本执行。 我知道这是从我的extensionmanifest permissionscontent_security_policy。但我试着这样做:

"content_security_policy": "script-src 'self' https://mydomain.firebaseio.com/; object-src 'self'", 

和:

"permissions": [ 
    "gcm", 
    "storage", 
    "notifications", 
    "https://*.firebase.com/", 
    "https://cdn.firebase.com/js/client/2.4.1/firebase.js", 
    "https://mydomain.firebaseio.com/*", 
    ], 

没有运气。

我也得到这个:

当试图安装这个扩展有警告: “content_security_policy”仅允许用于扩展和传统 打包应用程序,但是这是一个打包应用程序。

当我设置content_security_policy在manifest.js

"content_security_policy": "script-src 'self' https://mydomain.firebaseio.com/; object-src 'self'" 

回答

1

'content_security_policy' 仅允许用于扩展和传统的打包应用程序,但这是一个打包应用程序

你有什么不是扩展名,而是一个app。这是通过在清单中有一个"app"键来定义的。

Apps cannot override CSP

你需要解决这个身份危机:

  • 如果你真的是有一个扩展,你需要删除"app"键,做一个真正的扩展。

  • 如果您对术语感到困惑,而且您确实打算编写Chrome应用程序,则正确的方法是sandboxing

+0

发现后,我意识到我正在制作一个应用程序,而不是一个扩展名。 https://github.com/firebase/firebase-chrome-extension 但仍不明白为什么它不会以相同的方式工作。感谢那。 – Txugo

1

我有完全相同的问题。有在你需要“content_security_policy”到这个Firebase Blog一个明确的解决方案:

"content_security_policy": "script-src 'self' https://cdn.firebase.com 
https://*.firebaseio.com; object-src 'self'" 

对我来说真是棒极了!

+0

这就是我所做的。当我添加: “content_security_policy”:“script-src'self'https://mydomain.firebaseio.com/; object-src'self'” 仍然有问题。原因是:因为我试图在应用程序中完成而不是扩展。正如Xan提到的那样。 – Txugo

+0

这正是问题所在: **请勿使用mydomain.firebaseio.com,而是* .firebaseio.com。 复制粘贴我分享的确切代码而不会改变任何内容** Firebase说你不应该使用yourdomain.firebaseio.com,因为他们的框架还使用其他子域以及 – gutte

+0

......你是否将它用作应用? 我刚开始使用* .firebaseio.com,并得到同样的问题。 ,并且他们将其更改为扩展名(在清单中),即使使用[不是我的域名] .firebaseio.com也能正常工作。 你表现出什么样子? – Txugo