是否允许多行元内容值?

Is multiline meta content value allowed?

我正在使用 meta http-equiv="Content-Security-Policy" 标签将域列入白名单。该列表变得非常大,所以我想知道是否可以在 content 值中使用新行?

<meta http-equiv="Content-Security-Policy" content="
   default-src 'self' http://example.com;
   style-src 'self' 'unsafe-inline' http://example.com;
   script-src 'self' 'unsafe-inline' http://example.com;
">

编辑: 刚刚发现 validator.w3.org 在多行 content 值上显示错误,所以我猜这是不允许的。

此处 W3C HTML Checker(又名验证器)的维护者。 HTML 检查器不会报告多行 content 值的错误。它为您上面的示例报告的错误是:

Bad value Content-Security-Policy for attribute http-equiv on element meta

也就是说,错误是针对 http-equiv 属性,而不是针对 content 属性。

但请尝试将您的来源更改为:

<meta name="Content-Security-Policy" content="
   default-src 'self' http://example.com;
   style-src 'self' 'unsafe-inline' http://example.com;
   script-src 'self' 'unsafe-inline' http://example.com;
">

…你会看到它没有报告任何错误。

因此,您看到的错误是因为:如果 meta 元素具有 http-equiv 属性,则 according to the HTML spec the value of the http-equiv must be one of the following:

  • content-type
  • default-style
  • refresh
  • X-UA-Compatible

所以 HTML 规范(还)不允许 http-equiv="Content-Security-Policy"

综上所述,这个 是 W3C HTML 检查器 中的一个错误,因为检查器 应该 支持 http-equiv="Content-Security-Policy,在 details provided about http-equiv="Content-Security-Policy in the Content Security Policy spec.

之后

所以我raised a checker bug for it刚才

这基本上也是HTML规范中的一个错误,因为此时HTML规范本身也应该说http-equiv="Content-Security-Policy" 被允许。因此,我在上面引用的 HTML 规范的 I’ve raised a bug against the HTML spec for this to add http-equiv="Content-Security-Policy" to the Pragma directives 部分,以及针对该规范的补丁可能会在本周晚些时候合并到规范中。