我有 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”,但没有找到。
我怎样才能消除这些错误?