【问题标题】:XML parsing error for Content Security Policy内容安全策略的 XML 解析错误
【发布时间】:2018-02-21 12:59:15
【问题描述】:

我在为我的博客的内容安全策略获取正确的 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'/>

错误:元素类型“meta”必须后跟属性规范,“>”或“/>”

我已经阅读了 XML 语法并查看了确认内容应该用分号分隔的示例,并且每个策略都以空格分隔。我试过在字符串上加引号和不加引号,并调整间距,但我就是想不通这个解析错误。我对 Python 更熟悉,所以我相信这对于有更多 XML 经验的人来说是一个简单的问题。感谢您帮助 XML 新手! :)

【问题讨论】:

    标签: xml parsing syntax


    【解决方案1】:

    您在理解标记的方式中混合了两个“层”。就 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' />
    

    【讨论】:

    • 哦,哇,我知道这很简单,我只是忽略了。我可以确认它现在解析正常,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2021-12-13
    • 2020-04-11
    • 1970-01-01
    相关资源
    最近更新 更多