我有一个关于 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
and GET HTTP/1.1
也一样吗? (之间有两个空格GET
and HTTP/1.1
)
See RFC 7230,第 5.3 节请求目标:
一旦获得入站连接,客户端就会发送一个 HTTP
请求消息(第 3 节),其请求目标源自
目标 URI。请求目标有四种不同的格式,
取决于请求的方法以及请求是否
是代理。
request-target = origin-form
/ absolute-form
/ authority-form
/ asterisk-form
你说的是起源形式,描述于第5.3.1小节:
当直接向原始服务器发出请求时,除了
CONNECT 或服务器范围的 OPTIONS 请求(如下详述),客户端
必须仅发送目标的绝对路径和查询组件
URI 作为请求目标。如果目标 URI 的路径组件是
空,客户端必须发送“/”作为原始形式中的路径
请求目标。还发送主机标头字段,如中所定义
第 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
前面定义了“绝对路径”第2.7节 as
absolute-path = 1*( "/" segment )
So yes, some目标标识符是必需的,路径总是以斜杠为前缀,如果未知、空或不适用,则为/
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)