HTTP '方法' 的大小写最佳实践是什么?

14

我看到过 HTTP 方法以全大写或全小写字母的形式书写。例如,在表单元素的 method 属性中,为什么要写 POST 而不是 post 呢?

一些浏览器是否会对大小写不同的 POSTGET 进行不同的处理呢?


实际上,“POST”和“post”被解释为相同的内容并不重要。这个问题似乎是这个问题的重复。 - user8554766
3个回答

8
HTML5规范要求使用“get”或“post”。

4
XHTML要求<form>标签的method属性值只能是"get""post",且必须使用小写字母。这看起来很奇怪,因为HTTP规定方法必须使用大写字母发送,但我刚刚通过W3验证器检查过了确实如此。这可能就是HTTP方法使用小写字母的惯例来源。 - Mark Amery
1
我肯定在HTML5规范中有描述 - 当然有!而且HTML5标准只允许小写。为什么不花两分钟查一下再回答呢? - Christopher K.
HTML5规范提到:“methodformmethod内容属性是枚举属性”...“并且枚举属性的值“必须是给定关键字之一的ASCII不区分大小写匹配”,这意味着“范围在U+0041到U+005A(即拉丁大写字母A到拉丁大写字母Z)中的字符和范围在U+0061到U+007A(即拉丁小写字母a到拉丁小写字母z)中对应的字符也被认为是匹配的”。因此,您可以编写POSTpostPoStpoST等。它们都是有效的。只需选择一种样式,并始终使用它。 - Alex

7
短答案:在<form>标签的method属性中最好使用小写
长答案:这略微取决于HTML版本: HTML5:html5 living standard指出,小写的get映射到HTTP方法GET,小写的post映射到HTTP方法POST [1]。然而,截至今日,枚举属性匹配不区分大小写 [2]。因此,你理论上可以使用任何大小写。我相信几年前情况是不同的,但这就是living standard的性质。HTML5标准中的示例使用小写。因此,如果你遵循HTML5标准,我建议你使用小写,即使实际上并不重要。 XHTML:使用小写。xhtml-strict和xhtml-transitional的DTD仅定义小写的getpost [3,4]。在这里,这更为重要,因为使用大写会产生一个无效的XHTML文档,可能会在实践中触发丑陋的浏览器错误(取决于DTD、浏览器和http content-type)。 HTML 4: 在那个时代,使用大写字母是常见做法,但小写字母在实践中也很有效。这只是我的个人经验,我不会查阅 HTML 4 标准,因为它似乎现在已经不相关了(而且也没有人严格遵循它)。
[1] https://www.w3.org/TR/html5/forms.html#attr-fs-method [2] https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#enumerated-attribute [3] https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd 第695行
[4] https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd 第888行

1
无论您在表单的方法声明中使用POST还是post,您的网站都将正常工作。这更多地与您选择的文档类型有关。如果您使用XHTML,则所有内容都必须小写。如果不是(例如使用HTML5),则无所谓,甚至可以是PoSt。我个人仍然会选择小写变体,但选择权在您手中。无论您选择什么,重要的是......在页面的其余部分坚持使用它。

你的所有观点都是错误的。HTTP方法是区分大小写的,这与内容的DOCTYPE无关。 - user207421
1
@ejp:这很奇怪。 我总是使用小写字母,并且它完全正常工作。就我所知,如果您的文档类型是xhtml,验证器将抱怨method =“POST”。 - Bas Slagter
XHTML不是HTTP。XHTML验证器甚至无法看到HTTP方法。它可以看到文档和文档中的单词POST,如果出于其他原因存在的话。这些不是同一回事。 - user207421
1
@ejp:但是发帖人特别询问的是“表单元素的method属性”... - Bas Slagter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接