【问题标题】:Facebook app fails to load - Content Security Policy "frame-src"Facebook 应用程序无法加载 - 内容安全策略“frame-src”
【发布时间】:2021-11-12 17:19:26
【问题描述】:

我们有一个 Facebook 应用程序已经存在了很长时间。这是一个基于页面的应用程序,在 iframe 中加载。最近加载失败,Chrome 控制台出现这个错误:

[Report Only] Refused to frame 'https://edit.ihouseelite.com/' because it violates the following Content Security Policy directive: "frame-src *.doubleclick.net *.google.com *.facebook.com www.googleadservices.com *.fbsbx.com".

你可以在我们的测试页面看到问题:

https://www.facebook.com/Test-page-1158553550884937/app/451851288205481

首先 - 此消息以“仅报告”开头。这是否意味着这个错误并不是真正的错误,而可能预示着未来的问题?

假设它确实是一个错误,我该如何解决它?看起来 CSP 是由 Facebook 设置的,因此它们只允许特定域加载到 Facebook 页面内的 iframe 中。还是我读错了?我认为在应用程序设置(基本)中设置域会调整 CSP,但它似乎没有这样做。我们有几千个客户正在使用我们的应用程序,所以我真的很想弄清楚如何解决这个问题。欢迎所有建议。

【问题讨论】:

    标签: facebook facebook-php-sdk content-security-policy


    【解决方案1】:

    是的,它是 facebook 的一个 CSP,它发布了两个 CSP:content-security-policycontent-security-policy-report-only,你可以在开发工具中看到它:

    Report-Only 模式下使用 CSP,facebook 只是测试一些东西,没有真正的阻塞,只是发送违规报告。
    Facebook 的 CSP 不会受到这样的影响,但是当创建一个合法的应用程序时,facebook 应该自动将应用程序的域添加到 frame-src 指令中。

    【讨论】:

    • "facebook 应该自动将应用程序的域添加到 frame-src 指令中" - 这是我所期望的,但它似乎没有这样做,我们的域 (edit.ihouseweb.com) 是'没有被添加。虽然它说“仅报告”,但它也阻止了我们的应用程序被框住。
    • 您的 Facebook 应用可能尚未发布或未经版主批准。无论如何都应该向 Facebook 技术支持询问这个问题,因为如果在 frame-src 指令中不包含应用程序域,它将无法在 Facebook 页面上运行。
    • 好吧,我几年前写了这个应用程序,Facebook 似乎经常做出改变,破坏事情。在这一点上,我们实际上无法进行新安装,因为帐户必须有 2000 个关注者才能在页面上安装应用程序。我会尝试与技术支持联系。
    • Facebook 在其 CSP 中使用 report-uri 指令,因此他们会收到有关所有违规行为的报告,并且必须做出回应。
    猜你喜欢
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 2017-03-14
    相关资源
    最近更新 更多