【问题标题】:Why does 'x-www-form-urlencoded' begin with 'x-www', when other standard content types do not?为什么“x-www-form-urlencoded”以“x-www”开头,而其他标准内容类型却没有?
【发布时间】:2017-02-16 14:14:32
【问题描述】:

我了解过去,自定义标题名称使用前缀“X-”是标准的(我知道这样做不再被视为标准),但我一直无法找到此命名约定与值(“application/x-www-form-urlencoded”)之间存在任何关系。它最初是作为后来被采用的自定义内容类型值还是什么?

我在这里找到了this 链接,这当然很有趣,但一直找不到我的问题的答案。

有谁知道选择这个前缀的原因,以及它的含义?

【问题讨论】:

  • 感谢您的链接,顺便说一句。直到今天,我认为 RFC 1521 是最早提到 x 前缀的 :)

标签: http http-headers mime-types specifications w3c


【解决方案1】:

自定义标题名称使用前缀“X-”是标准的

实际上……不,一点也不。准确地说:它从来都不是标准,只是最佳实践。它允许实现者引入新的内容类型和编码,而无需为其编写完整的 RFC。如今,IANA Media Type Registry 非常适合。 RFC 6648 杜绝这种做法。

application/x-www-form-urlencoded 以这种方式作为前缀的原因(顺便说一句,它在所述注册表中被列为适当的 MIME 类型))源于它是在 URL 中构造查询字符串的“自定义”方法。那部分有never seen proper regulation。 HTML 背后的人刚刚去做,这完全证明了前缀是正确的。

【讨论】:

    【解决方案2】:

    就历史而言:它具有x- 前缀,因为它起源于a proposal from Mosaic——而且由于它只是一个提议,因此他们使用x- 扩展前缀来最初定义它。但后来其他浏览器也以这种方式实现了它,而且没有人花时间正确地标准化一个无前缀的替代方案,所以它就一直这样下去,现在就是这样。

    这可以追溯到 1993 年 www-talk 邮件列表中标题为“Submitting input-form data to server”的线程,在该线程中,a September 1993 message from Marc Andreessen

    这就是我们在 Mosaic 2.0 中所做的……见

    http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/fill-out-forms/overview.html

    ...了解我们正在做的事情的详细信息

    该链接现在已损坏,但标题为“Mosaic for X version 2.0 Fill-Out Form Support”的文档是archived at archive.org。以下是相关摘录:

    ENCTYPE 指定填写表单内容的编码。此属性仅在 METHOD 设置为 POST 时适用——即便如此,到目前为止也只有一个可能的值(默认值 application/x-www-form-urlencoded)。

    不管怎样,application/x-www-form-urlencodedis now formally defined in the URL spec,有解析和序列化它的算法——尽管它全部定义的部分有这个注释:

    application/x-www-form-urlencoded 格式在许多方面都是异常的怪物,是多年实施事故和妥协的结果,导致了一系列互操作性所需的要求,但绝不代表良好的设计实践。特别提醒读者要密切注意涉及字符编码和字节序列之间重复(在某些情况下是嵌套)转换的扭曲细节。不幸的是,由于 HTML 表单的流行,这种格式被广泛使用。

    【讨论】:

    • "application/x-www-form-urlencoded 现在在当前的 URL 规范中正式定义" 不完全。您引用的内容是一种生活标准,希望有一天会过时 RFC 3986(current URL 规范)和 RFC 3987。它更像是一个草案而不是一个真正的规范。对于解析/序列化部分,我宁愿参考 W3C HTML5 推荐的this section。哦,感谢有关马赛克的历史记录。这肯定是一个有趣的阅读:)
    猜你喜欢
    • 2015-04-02
    • 1970-01-01
    • 2019-09-12
    • 2021-02-03
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多