CSP frame-src 指令的 Facebook 聊天插件问题

Facebook Chat Plugin issues with CSP frame-src directive

我们的一个网站上有一个 Facebook 聊天插件。我们有一个 CSP 设置,任何第三方供应商都被我们列入白名单。

问题是,在移动设备上查看具有 Facebook 聊天插件的网站时,单击“在 Messenger 中聊天按钮”时会抛出:

Refused to frame '' because it violates the following Content Security Policy directive: "frame-src ... ".

但它严格地说 '' 我们无法在我们的 CSP headers 中将其列入白名单 headers。

当我们尝试禁用 CSP headers 时,单击“在 Messenger 中聊天”按钮后,它会尝试打开 Messenger 应用程序。

关于解决此问题的任何想法?

But it strictly said '' to which we are unable to whitelist in our CSP headers.

在某些平台上 Chrome 不在控制台中显示 blocked-uri,我不知道为什么。如果你有一个 Safari,试试 Safari(我认为 Firefox 在你的情况下不会阻止任何东西)。

FB Chat 插件的脚本使用 intent://fb-messenger:// 供应商方案打开应用程序:

__d("sdk.openMessenger", ["sdk.UA"], (function(a, b, c, d, e, f) {
  "use strict";
  e.exports = a;
  var g = "https://itunes.apple.com/us/app/messenger/id454638411",
    h = "https://play.google.com/store/apps/details?id=com.facebook.orca",
    i = 3e3;

  function a(a) {
    var c, d, e = a.link;
    a = a.app_id;
    b("sdk.UA").android() ? (c = "intent://share/#Intent;package=com.facebook.orca;scheme=fb-messenger;S.android.intent.extra.TEXT=" + encodeURIComponent(e) + ";S.trigger=send_plugin;", a && (c += "S.platform_app_id=" + encodeURIComponent(a) + ";"), c += "end", d = h) : (c = "fb-messenger://share?link=" + encodeURIComponent(e), a && (c += "&app_id=" + encodeURIComponent(a)), d = g);
    setTimeout(function() {
      window.location.href = d
    }, i);
    window.location.href = c
  }
}), null);

尽管页面 CSP 不应阻止供应商架构,但某些浏览器可能需要在 frame-src 指令中指定 intent:fb-messenger: 方案源。

When we tried to disable the CSP headers, upon clicking the "Chat in Messenger" button, it tries to open the Messenger app instead.

是的,如果安装了 Adnroid,它会尝试打开 Messenger 应用程序。它这个问题:Facebook chat button of my website in android webview is not opening the messenger app there is a link to the solution - 。可能对你有帮助。
为了防止打开 Messenger 应用程序,您可能不必在 CSP 中使用 intent:fb-messenger: 方案源。