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'; "之後它創造了奇蹟。