【问题标题】:invoke firebase api from chrome extension从 chrome 扩展调用 firebase api
【发布时间】:2016-06-12 21:25:11
【问题描述】:

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

拒绝加载脚本 'https://mydomain.firebaseio.com/.lp?start=t&ser=323&cb=1&v=5' 因为它违反了以下内容安全政策指令: “default-src 'self' blob:文件系统:chrome-extension-resource:”。 请注意,'script-src' 没有明确设置,所以 'default-src' 是 用作后备。 (匿名函数)@firebase241.js:168 firebase241.js:168 拒绝加载脚本

firebase 脚本执行时。 我知道这与我的扩展清单中的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' 仅允许用于扩展和旧版 打包的应用,但这是一个打包的应用。

当我在 manifest.js 中设置 content_security_policy 时

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

【问题讨论】:

    标签: google-chrome-extension firebase


    【解决方案1】:

    'content_security_policy' 仅允许用于扩展和旧版打包应用,但这是一个打包应用

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

    应用程序cannot override CSP

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

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

    • 如果您对术语感到困惑,并且真的想编写一个 Chrome 应用程序,那么正确的方法是 sandboxing

    【讨论】:

    • 在找到这个之后,我意识到我正在制作一个应用程序而不是一个扩展程序。 github.com/firebase/firebase-chrome-extension 但仍然无法理解为什么它不能以同样的方式工作。谢谢你。
    【解决方案2】:

    我遇到了完全相同的问题。 Firebase Blog 中有一个明确的解决方案,您需要将“content_security_policy”放入此:

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

    它对我很有用!

    【讨论】:

    • 我就是这么做的。当我添加:“content_security_policy”:“script-src 'self'mydomain.firebaseio.com; object-src 'self'”时仍然存在问题。原因:因为我试图在应用程序而不是扩展程序中做到这一点。正如 Xan 提到的那样。
    • 这正是问题所在:不要使用 mydomain.firebaseio.com 而是使用 *.firebaseio.com。复制粘贴我共享的确切代码而不更改任何内容。 Firebase 说你不应该使用 yourdomain.firebaseio.com,因为他们的框架也使用其他子域
    • 再次...您将其用作应用程序吗?我最初使用 *.firebaseio.com 并遇到了同样的问题。他们将其更改为扩展名(在清单中)并且即使使用 [不是我的域].firebaseio.com 也能正常工作。你表现出来的样子是什么?
    • 看看他们拥有的唯一一个 firebase 示例......它是一个扩展而不是一个应用程序。 github.com/firebase/firebase-chrome-extension/blob/master/…
    • 我遇到了和你一样的错误,当我复制粘贴我共享的行时,它就消失了。我创建了一个扩展程序,而不是一个应用程序。也许我们出于不同的原因有同样的错误。只是想帮忙
    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多