2

我试图在Chrome扩展后台页面中使用Firebase,但看起来它正在执行内联脚本,由于安全考虑,这是不允许的。Firebase + Chrome内容安全策略设置?

我当前设置的CSP到:

{"content_security_policy": 
    "script-src 'self' https://cdn.firebase.com https://<my-subdomain>.firebaseio.com; object-src 'self'"} 

我能够加载初始火力地堡脚本,但在调用新的火力地堡(“我的-火力-URL”),我得到以下错误:

Refused to execute inline script because it violates the following Content Security Policy directive: ". Uncaught ReferenceError: pRTLPCB is not defined

Firebase团队(或任何人)可以提供任何解决方法或建议,也可能解释为什么脚本正在内联执行?

+0

啊,我知道我不是唯一一个。是的,问题在于Firebase构造函数在调用方面做了一些时髦的魔法(console.log新的Firebase(URL)以查看我的意思。 – jjperezaguinaga

+0

可悲的是没有从内容方面获得成功 - http:// d。 PR/I/pRMz – jjperezaguinaga

回答

7

在有人问的时候,有一个防止火力地堡在Chrome扩展工作的错误,但是这已得到修复。

正确CSP是:

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

(注意,在该域的通配符是重要的,因为火力地堡可以连接到其他子域内部)

对于使用火力地堡样品铬延伸,请参阅:https://github.com/firebase/firebase-chrome-extension

+0

请为我们做更新时,有一个答案 – sgrove

+0

我仍然得到以下几点:!'拒绝加载脚本的“https://auth.firebase.com ...'但加入'的https: // auth.firebase.com'到CPS似乎解决它。 – Lukas

3

我有类似的问题;你看,Firebase的构造函数似乎执行了一些dom操作,以便执行一些脚本(我知道的含糊不清),这触发了Chrome CSP,因为很好,你不应该那样做。

我甚至试图通过Sandbox Pages包裹构造,但没有成功(我得到一个DOM ERR 18,即使我的清单拥有所有权限)。如果您尝试在页面操作/浏览器操作的后台页面或弹出页面中执行此操作,也会发生同样的情况。

替代方案?您可以将Firebase注入为内容脚本(通过清单执行),并通过Message Passing将回调作为Chrome.extension.sendMessage发送。我现在正在做这件事,所以我可以告诉你,至少Firebase构造函数是如何工作的。

解决方案?詹姆斯Tampling读取出来,并提示了火力地堡团队查找此:)后

UPDATE:注浆Firebase.js为内容脚本不工作都不是,但好消息是,球队火力地堡(达到安德鲁李)正在检查它。

UPDATE 2 Firebase团队修复了它,现在它可以在Popup页面上工作(在浏览器弹出窗口或页面操作一中)。您需要在您的manifest.json中添加以下CSP,虽然"content_security_policy": "script-src 'self' 'unsafe-eval' https://cdn.firebase.com https://*.firebaseio.com https://*.firebaseio.com; object-src 'self'; "之后它创造了奇迹。