HTTP 方法是不是区分大小写?

Posted

技术标签:

【中文标题】HTTP 方法是不是区分大小写?【英文标题】:Are HTTP methods case sensitive?HTTP 方法是否区分大小写? 【发布时间】:2018-10-15 22:28:36 【问题描述】:

要问一个与Are HTTP headers case-sensitive? 相关的问题,如果 HTTP 方法区分大小写,那么大多数服务器使用“get”或“post”与“GET”或“POST”做什么?

例如,Apache httpd 看起来像响应小写方法返回“501 Method Not Implemented”,这是我所期望的。

【问题讨论】:

方法确实区分大小写 (w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.1) @OliverCharlesworth rfc2616 已过时,tools.ietf.org/html/rfc7230#section-3.1.1 是当前文本——您提出的观点是:方法区分大小写。 相关:HTTP method names: upper or lower case? 这个问题正文可以按书面形式回答吗?对于可证明不符合规范的条件,它似乎要求“大多数服务器”的行为。此外,悬赏金要求官方引用这种未定义的行为,这似乎是自相矛盾的,或者是所有主要服务器实现(及其选择的故障模式)的列表,以近似问题的“大多数服务器”。 这能回答你的问题吗? HTTP method names: upper or lower case? 【参考方案1】:

方法标记表示要在目标上执行的请求方法 资源。请求方法区分大小写

https://tools.ietf.org/html/rfc7230#section-3.1.1

方法标记区分大小写,因为它可能被用作访问 方法名称区分大小写的基于对象的系统。

https://tools.ietf.org/html/rfc7231#section-4.1

有趣的是,虽然两个参考文献都说这个案例很重要, 没有人说应该使用什么情况。从第二个继续 参考:

按照惯例,标准化方法以全大写 US-ASCII 定义 字母。

所以现在这里它确实是大写,但它也说按惯例。所以在纸上, 看起来你也可以使用 all lower。在实践中,它似乎只有上层 被接受:

PS C:\> curl.exe -X POST https://www.ietf.org
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="robots" content="NONE,NOARCHIVE">
  <title>403 Forbidden</title>
PS C:\> curl.exe -X post https://www.ietf.org
<html>
<head><title>400 Bad Request</title></head>

【讨论】:

区分大小写 仅表示您必须使用指定的名称,而无需更改大小写。方法名指定为POSTGET等,这里没有歧义。

以上是关于HTTP 方法是不是区分大小写?的主要内容,如果未能解决你的问题,请参考以下文章

Java UUID是不是区分大小写

Java UUID是不是区分大小写

cookie 的名称是不是区分大小写?

查询字符串键是不是区分大小写?

SQL Server 检查是不是区分大小写?

检查文件系统在 Python 中是不是不区分大小写