只有在 Firefox(最新版和旧版)中,我的一个网站才会收到状态代码 200 的响应,但 Firefox 会直接中止,没有任何错误消息。服务器日志也没有显示任何问题。通过检查设置,我将其归结为 CSP 标头。
有人看到我遗漏了什么吗?
add_header Content-Security-Policy "default-src 'self';
script-src 'self' data: 'unsafe-inline' 'unsafe-eval' *.$server_name *.google-analytics.com *.googletagmanager.com *.google.com *.googleapis.com *.videopress.com;
style-src 'self' 'unsafe-inline' *.$server_name *.googleapis.com *.google.com *.bootstrapcdn.com *.jquery.com;
img-src 'self' data: *.$server_name *.google.com *.google-analytics.com *.gstatic.com *.googleapis.com *.initiative-s.de *.gravatar.com *.w.org *.creativecommons.org *.jquery.com;
font-src 'self' data: *.$server_name *.gstatic.com *.bootstrapcdn.com;
connect-src 'self' *.$server_name *.googletagmanager.com;
media-src 'self' *.$server_name *.w.org *.videopress.com;
object-src 'none';
child-src 'self' *.googletagmanager.com maps.google.com pastebin.com *.videopress.com;
form-action 'self';
upgrade-insecure-requests;
reflected-xss block;
referrer no-referrer";
顺便说一句……如果您想知道 *.$server_name 是做什么用的。它是 nginx 变量,允许我将所有子域列入白名单。
非常感谢 Mike
答案1
您可以通过两种方式了解哪个指令阻止了哪个 URL:
- 访问网站时,检查 Firefox 控制台日志。任何 CSP 违规行为都会列在那里
- 添加 report-uri 指令,以便浏览器可以将 CSP 报告发送到某个地方。我推荐免费服务https://report-uri.io/