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

Min*_*ock 4 protocols http file path web

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

GET /path/to/resource.txt HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

或换句话说:

METHOD URI HTTP-VERSION
Run Code Online (Sandbox Code Playgroud)

它是否需要URI/字符开头,以便它们/path/to/resource.txt是相同的path/to/resource.txt并且两者都有效?

如果一个领导/是不需要的,都是GET / HTTP/1.1GET HTTP/1.1同一个吗?(GET和之间有两个空格HTTP/1.1)

Cod*_*ter 6

请参阅RFC 7230,第5.3节"请求目标:

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

request-target = origin-form
                / absolute-form
                / authority-form
                / asterisk-form
Run Code Online (Sandbox Code Playgroud)

你在讨论第5.3.1小节中描述的原始形式:

直接做出请求时,源服务器,比CONNECT或服务器范围OPTIONS请求(如下文详述)以外,客户端必须只发送目标URI的绝对路径和查询组件作为请求对象. 如果目标URI的路径组件为空,则客户端必须发送"/"作为request-target的origin-form中的路径. 还会发送主机头字段,如第5.4节中所定义.

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

http://www.example.org/where?q=now
Run Code Online (Sandbox Code Playgroud)

直接从源服务器打开(或重用)TCP连接到主机"www.example.org"的端口80并发送行:

GET /where?q=now HTTP/1.1
 Host: www.example.org
Run Code Online (Sandbox Code Playgroud)

并且"绝对路径"在第2.7节中已经定义为

 absolute-path = 1*( "/" segment )
Run Code Online (Sandbox Code Playgroud)

所以,是的,需要一些目标标识符,路径始终以斜杠为前缀,如果未知,空或不适用,则为/.