我无法为我的博客的内容安全政策获取正确的XML语法。它很简单,但只要我添加更多策略,就会出现解析错误。
当前政策(有效):
<meta http-equiv='Content-Security-Policy' content='upgrade-insecure-requests'/>
新政策(解析错误):
<meta http-equiv='Content-Security-Policy' content='upgrade-insecure-requests';'report-uri' 'https://redacted.report-uri.com/r/d/csp/enforce'/>
错误:元素类型&#34;元&#34;必须遵循属性规范,&#34;&gt;&#34;或&#34; /&gt;&#34;
我已经阅读了XML语法,并查看了确认内容应使用分号分隔的示例,并且每个策略都以空格分隔。我已尝试在字符串上使用和不使用引号,并调整间距,但我无法弄清楚此解析错误。我对Python更熟悉,所以我确信对于那些对XML更有经验的人来说,这是一个简单的问题。感谢您帮助XML新手! :)
答案 0 :(得分:0)
你正在混合两个&#34;层&#34;以你理解标记的方式。就XML和HTML而言,只有属性及其值:
<meta http-equiv='some value' content='some value' />
请注意,这些值均由匹配引号分隔,引号可以是'
或"
。在这些引号内部可以是任何内容,除了会被误认为结束引号的内容。
如果您尝试将'
放在值中,HTML / XML解析器会将其视为值的结尾,然后不知道如何处理接下来的内容;它基本上看到了这个:
<meta http-equiv='some value' content='some value' some-unexpected-text />
以分号分隔的列表全部是里面属性的值,可以被其他一些工具(CSP定义)理解:
upgrade-insecure-requests; report-uri https://redacted.report-uri.com/r/d/csp/enforce
所以你的标记应该是这样的:
<meta http-equiv='Content-Security-Policy' content='upgrade-insecure-requests; report-uri https://redacted.report-uri.com/r/d/csp/enforce' />