使用方法
- 在 策略 中逐行输入指令,名称须与标准写法一致,例如 script-src。
- 选择 发送方式:Content-Security-Policy 会执行策略,Content-Security-Policy-Report-Only 则是先用来测试的标头。
- 阅读 按资源显示的实际规则,查看哪条指令管理脚本、样式、图片和框架。
- 把 标头行 复制到服务器,并修正结果下方列出的每条警告。
哪条规则适用于某类资源
浏览器会用一条指令检查每类资源。如果该指令缺失,就沿着回退链向上查找,表格会显示所经过的链。回退链来自 CSP Level 3 第6.8.3节(英文)。
- 脚本:script-src-elem,然后 script-src,然后 default-src。
- 内联事件处理程序:script-src-attr,然后 script-src,然后 default-src。
- 样式表:style-src-elem,然后 style-src,然后 default-src。内联 style 属性按相同方式处理,使用 style-src-attr。
- 框架:frame-src,然后 child-src,然后 default-src。
- Worker:worker-src,然后 child-src,然后 script-src,然后 default-src。
- 图片、字体、媒体、插件、清单和 fetch 请求:先看各自的指令,然后是 default-src。
检查工具读取什么
指令之间用分号隔开,本工具也接受换行。指令名称读到第一个空格为止,并且不区分大小写。同一指令出现两次时,只采用第一次,重复的会被跳过(CSP Level 3 第2.2.1节)。
- 'self' 和 'none' 等关键字要用单引号括起来。'none' 必须单独出现在它的列表中。
- nonce 是 'nonce-' 加上 base64 值。哈希是 sha256、sha384 或 sha512,加一个连字符和 base64 值(第2.3.1节)。
- 指令值中不允许逗号,因为逗号在标头中用来分隔策略。
检查工具不做什么
- 它不加载页面,也不在浏览器中测试策略。表格显示的是浏览器会采用的规则,而不是您的页面是否仍能正常工作。
- 它检查关键字、nonce 和哈希的拼写,但不详细检查主机和协议源。
- 它不判断它没有列出的指令,例如 sandbox。这些指令会原样保留在标头行中。
示例:样例策略
使用样例策略时,脚本使用 script-src,因为没有 script-src-elem。框架没有 frame-src 或 child-src,因此回退到 default-src。Worker 没有 worker-src 或 child-src,因此使用 script-src。style-src 指令包含 'unsafe-inline',检查工具将它列为一条警告。
| 资源 | 按顺序检查 | 实际使用的规则 |
|---|---|---|
| 脚本(script 元素) | script-src-elem、script-src、default-src | script-src |
| 框架(iframe) | frame-src、child-src、default-src | default-src |
| Worker | worker-src、child-src、script-src、default-src | script-src |
常见问题
为什么表格中显示了我没有写过的脚本规则?
没有自己指令的资源会使用它回退到的指令。对脚本而言是 script-src-elem,然后是 script-src,最后是 default-src。表格显示的是浏览器会采用的规则,因此即使缺少 script-src,也可能有一条规则生效。
'unsafe-inline' 允许什么?
它允许该指令所管辖的位置使用内联脚本或内联样式。同一来源列表中的 nonce 或哈希会让浏览器忽略 'unsafe-inline'(CSP Level 3 第6.7.3.2节),因此对于您需要的内联代码,请改用其中之一。
应该写 report-uri 还是 report-to?
请使用 report-to。MDN 说它是取代 report-uri 的指令。在 report-to 尚未被广泛支持时,MDN 建议两者都发送;如果存在 report-uri,检查工具会给出警告。
为什么某个指令名称被标为未知?
检查工具只判断浏览器内置且 MDN 有记载的指令。它不认识的名称会原样保留在标头行中,但不会出现在表格中,也不做判断。
这个工具会把我的策略发送到什么地方吗?
不会。标头在您的浏览器中生成。您输入的内容不会发送给我们,也不会保存,策略也不会在任何网站上测试。
CSP Level 3 是正式标准吗?
还不是。本检查工具所依据的文本是2026年10月27日的 W3C 工作草案,仍处于推荐标准的流程之中。在生产环境策略中依赖某条规则之前,请阅读最新版本。
资料来源
- CSP Level 3,W3C 工作草案,2026年10月27日(第2.2、2.3.1、4.4.1、6.7.3.2和6.8.3节)(英文)
- MDN:Content-Security-Policy 标头、其指令及回退(英文)
数据和文字最近核对于2026年11月10日星期二。