安全响应头到底拦了什么?CSP 的 nonce 怎么用?HSTS 为什么不能无条件发?这篇用一个页面对照有无响应头,在真实的 Chrome 里逐个看哪些行为被拦住。
[没有安全响应头]
内联脚本 ran
带 nonce 的内联脚本 ran
MIME 是 text/plain 的外部脚本 ran
收到的 Referer Referer=http://127.0.0.1:9601/
被另一个站点用 iframe 嵌入 被嵌入的页面加载并回报了
[加了 nosniff、X-Frame-Options、CSP(nonce)、Referrer-Policy]
内联脚本 没有执行
带 nonce 的内联脚本 ran
MIME 是 text/plain 的外部脚本 没有执行
收到的 Referer Referer=None
被另一个站点用 iframe 嵌入 没有回报(被拒绝嵌入)上一篇:开发模式 Debugger 风险;下一篇:HTTPS 与反向代理。
浏览器是本机的 Google Chrome 无头模式。第一次运行时我把页面里的一个字符串引号写错、服务端没有启动,脚本因此卡住,我给 Chrome 的运行加了超时。
X-Content-Type-Options: nosniff X-Frame-Options: DENY Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-cdHD60VADsB8jdWt'; frame-ancestors 'none'; connect-src 'self' http://localhost Referrer-Policy: no-referrer
http 请求: None | https 请求: max-age=31536000; includeSubDomains behind a TLS-terminating proxy, request.is_secure 是否为真取决于 ProxyFix(x_proto=1)(见第 135 篇);没配时即使用户走的是 https,这里也是 http 无 ProxyFix,带 X-Forwarded-Proto: https → False ProxyFix(x_proto=1) → True