HTTP路径必须以斜杠开头吗?

6

我有一个有关HTTP格式的问题。HTTP请求的第一行看起来像这样:

GET /path/to/resource.txt HTTP/1.1

或者换句话说:
METHOD URI HTTP-VERSION

是否需要URI/字符开头,使得/path/to/resource.txtpath/to/resource.txt两者相同且均有效?

如果不需要前导的/,那么GET / HTTP/1.1GET HTTP/1.1也相同吗?(GETHTTP/1.1之间有两个空格)

1个回答

10

请参见RFC 7230, 第5.3节 请求目标

一旦获得入站连接,客户端发送一个HTTP请求消息(第3节),其中请求目标从目标URI派生。请求目标有四种不同的格式,具体取决于所请求的方法和请求是否针对代理。

request-target = origin-form
                / absolute-form
                / authority-form
                / asterisk-form

您谈论的是原始形式,子节5.3.1中有描述:

当直接向源服务器发出请求(除了下面详细说明的CONNECT或服务器范围OPTIONS请求)时,客户端必须仅将目标URI的绝对路径和查询组件作为请求目标发送。如果目标URI的路径组件为空,则客户端必须将“/”作为请求目标的原始形式中的路径发送。还发送Host头字段,如第5.4节所定义。

例如,客户端希望检索作为资源标识的表示

http://www.example.org/where?q=now
直接从源服务器打开(或重用)到主机“www.example.org”的80端口的TCP连接,并发送以下行:
GET /where?q=now HTTP/1.1
 Host: www.example.org

“绝对路径”在第2.7节中早已定义为

 absolute-path = 1*( "/" segment )
所以,是的,需要一些目标标识符,路径总是以斜杠为前缀,如果未知、空或不适用,则为/

1
为了允许在HTTP的某个未来版本中对所有请求进行绝对形式的转换,服务器必须接受请求中的绝对形式,尽管HTTP / 1.1客户端仅会在请求代理时发送绝对形式。因此这是有争议的。 - Grief

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