我对HTTP格式有疑问。 HTTP请求的第一行看起来像这样:
GET /path/to/resource.txt HTTP/1.1
或换句话说:
METHOD URI HTTP-VERSION
URI
是否需要以/
字符开头,以便/path/to/resource.txt
与path/to/resource.txt
相同且两者都有效?
如果不需要领先的/
,那么GET / HTTP/1.1
和GET HTTP/1.1
也一样吗? (GET
和HTTP/1.1
之间的两个空格)
答案 0 :(得分:6)
请参阅RFC 7230, section 5.3 Request target:
获得入站连接后,客户端会发送HTTP 请求消息(第3节),其中包含一个请求目标 目标URI。请求目标有四种不同的格式, 取决于所请求的方法和请求 是代理人。
request-target = origin-form / absolute-form / authority-form / asterisk-form
您正在谈论原型 - subsection 5.3.1:
中所述直接向源服务器发出请求,而不是 CONNECT或服务器范围的OPTIONS请求(如下所述),一个客户端 必须只发送目标的绝对路径和查询组件 URI作为请求目标。 如果目标URI的路径组件是 空,客户端必须发送“/”作为原始形式的路径 request-target。还发送了主机头字段,如中所定义 第5.4节。
例如,希望检索表示的客户端 资源标识为
直接从源服务器http://www.example.org/where?q=now
将打开(或重用)TCP 连接到主机“www.example.org”的端口80并发送 行:
GET /where?q=now HTTP/1.1 Host: www.example.org
“{绝对路径”在section 2.7之前定义为
absolute-path = 1*( "/" segment )
所以是的,需要一些目标标识符,路径始终以斜杠为前缀,如果未知,空或不适用,则为/
。