-1

所以我试图避免使用(另一个)页面规则来为我的一个子域禁用 Rocketloader,因为我们不能使用 RegEx 在单个页面规则下选择多个特定子域,并且只能获得 3 个免费帐户的页面规则.

根据此页面:

https://support.cloudflare.com/hc/en-us/articles/216537517-Using-Content-Security-Policy-CSP-with-Cloudflare

我可以在域中添加一个标头以允许来自 CloudFlare 的脚本:

add_header Content-Security-Policy "script-src 'self' ajax.cloudflare.com;";

我在该子域的 Nginx 配置中这样做(它实际上是一个 Chronograph 容器),重新启动 Nginx,测试以确保它“接受”,它确实做到了:

图像|690x320

但是当我尝试加载域时,它不会加载,检查器会显示:

图片|690x50

不是很熟悉,有人知道我在哪里搞砸了吗?

4

1 回答 1

0

我在哪里搞砸了?

首先,这里:

我可以在域中添加一个标头以允许来自 CloudFlare 的脚本:
add_header Content-Security-Policy "script-src 'self' ajax.cloudflare.com;";
我在 Nginx 配置中这样做了

其次,您信任该report-uri服务,但它让您失望了。

  1. 在将 CSP 标头添加到 Nginx 配置之前,您遇到了问题ajax.cloudflare.com(否则,为什么要添加它)。这意味着您已经通过 HTTP 标头或元标记发布了 CSP <meta http-equiv= 'Content-Security-Policy'>
    通过将 CSP 标头添加到 Nginx 配置,您已向页面添加了第二个策略。
    多个 CSP 作为顺序过滤器工作 - 所有源都必须通过两个 CSP 才能被解析。第二个 CSP 允许ajax.cloudflare.com主机源,但第一个仍然禁止它(您在检查器中观察到)。

您必须弄清楚第一个 CSP 的发布位置并将其添加ajax.cloudflare.com到其中,而不是发布第二个 CSP。

  1. 没有人知道report-uri如果同时发布两个 CSP HTTP 标头或一个与元标记配对的 HTTP 标头,它的幕后是什么以及它会如何反应
    看看浏览器实际获得了哪个 CSP 以及其中有多少,指南是在这里
    如果有 2 个 CSP 标头,您将看到如下内容: 在此处输入图像描述

如果是 CSP 元标记,您可以通过检查 HTML 代码轻松检查。

我想report-uri只是没想到会出现这样的情况。

于 2021-08-03T19:56:28.410 回答