为 apache 虚拟主机配置内容安全策略

为 apache 虚拟主机配置内容安全策略

我有 Apache 2.4,并且在 httpd-vhosts.conf 文件中配置了以下站点:

<VirtualHost *:80 *:8080 *:8084>
    DocumentRoot "c:\apache_php\sites\public"
    ServerName www.mydomain.com
</VirtualHost>


<VirtualHost *:80 *:8080 *:8081>
    DocumentRoot "c:\apache_php\sites\shared"
    ServerName shared.mydomain.com
</VirtualHost>

shared.mydomain.com 域名有一个 javascript 文件,我想在www.mydomain.com/index.php和:

<script src="http://shared.mydomain.com:8081/js/file.js"></script>

我在 /public 和 /shared 文件夹的根目录中创建了一个 .htaccess 文件,其中包含以下内容:

Header unset Content-Security-Policy
Header add Content-Security-Policy "script-src 'self' *.mydomain.com 'unsafe-inline' 'unsafe-eval'"

并且我在 httpd.conf 文件中启用了 mod_headers:

LoadModule headers_module modules/mod_headers.so

添加 .htaccess 文件后,我重新启动了 Apache。

然而,我不断得到:

Refused to load the script 'http://shared.mydomain.com:8081/js/file.js' because it violates the following Content Security Policy directive: "script-src 'none'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'none'". Either the 'unsafe-inline' keyword, a hash ('sha256-Ar45cH3tWULAEHfrKWcx2xAENlIAClGDIdLNu/5tKMY='), or a nonce ('nonce-...') is required to enable inline execution.

每当我尝试在公共站点中加载 index.php 时,如果我查看 Inspector 中的标题,它会针对 index.php 文件和 file.js 显示以下内容:

Referrer Policy: strict-origin-when-cross-origin

我不知道这个设置在哪里,或者为什么 .htaccess 文件中的 Headers 没有覆盖此设置。我在 apache 文件夹中的所有文件中搜索了这个“Referrer Policy”,但没有找到。

我怎样才能消除这些错误?

相关内容