CSP 生成与检查工具

每行一条指令,或用分号分隔。您会得到可复制的标头、一张表格(显示脚本、样式、图片和其他资源实际适用的规则),以及削弱策略的值的警告。

免费 在浏览器中运行 核对于2026年11月10日星期二

指令,例如 default-src 'self'。用分号或换行分隔。指令名称不区分大小写。

发送方式

Report-Only 是在正式执行策略之前用来测试的标头。标头名称即标头行开头的名称。

结果

标头行 — 复制到服务器设置或框架的标头配置中。
检查 — 每条警告都列在结果下方。
标头行
按资源显示的实际规则

此工具在您的浏览器中运行。您输入的内容不会发送给我们。

使用方法

  1. 在 策略 中逐行输入指令,名称须与标准写法一致,例如 script-src。
  2. 选择 发送方式:Content-Security-Policy 会执行策略,Content-Security-Policy-Report-Only 则是先用来测试的标头。
  3. 阅读 按资源显示的实际规则,查看哪条指令管理脚本、样式、图片和框架。
  4. 把 标头行 复制到服务器,并修正结果下方列出的每条警告。

哪条规则适用于某类资源

浏览器会用一条指令检查每类资源。如果该指令缺失,就沿着回退链向上查找,表格会显示所经过的链。回退链来自 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 工作草案,仍处于推荐标准的流程之中。在生产环境策略中依赖某条规则之前,请阅读最新版本。

资料来源

数据和文字最近核对于2026年11月10日星期二。

我们使用必要的 Cookie 来运行网站。经您同意后,Google 还会使用广告 Cookie 展示个性化广告。如果您拒绝,仍会看到广告,但广告不会个性化。