是否允许多行元内容值?

时间:2015-09-02 17:36:50

标签: html meta-tags multiline meta content-security-policy

我使用__repr__()标记将域名列入白名单。列表变得非常大,所以我想知道在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值上显示错误,因此我猜不允许这样做。

1 个答案:

答案 0 :(得分:4)

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"是允许的。所以I’ve raised a bug against the HTML spec for thishttp-equiv="Content-Security-Policy"添加到我上面引用的HTML规范的Pragma directives部分,并且这个补丁可能会在本周晚些时候合并到规范中。