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>
【讨论】:
区分大小写 仅表示您必须使用指定的名称,而无需更改大小写。方法名指定为POST
、GET
等,这里没有歧义。以上是关于HTTP 方法是不是区分大小写?的主要内容,如果未能解决你的问题,请参考以下文章