HTTP 的请求行格式
请求行
所有 HTTP 报文的起始行,在请求消息中叫做请求行,请求行有三个目的:
表明客户端想要执行的命令/动作
说明应该在哪个资源上执行动作
客户端在使用的 HTTP 版本
请求行的语法应该是这样的:
<METHOD> <request-uri> <HTTP-VERSION>复制代码
方法 (METHOD)
METHOD 是客户端希望服务端采用的操作类型,它总是用大写字母指定。HTTP/1.1 定义了 8 中方法,其中 GET, HEAD and POST 被广泛的使用。它们被称为“方法”而不是“命令”,因为 HTTP 标准使用了面向对象编程的术语。
请求 URL (Request URI)
请求 URI 是用于请求适用资源的统一资源标识符(uniform resource identifier),虽然 URI 理论上可以指统一资源定位符 (URL) 或统一资源名称 (URN),但目前 URI 几乎总是遵循 Web URL 标准语法规则的 HTTP URL。
假设用户输入这样一个URL:
http://www.myfavoritewebsite.com:8080/chatware/chatroom.php复制代码
我们显然不需要向服务器发送 “http:”。客户端将获取剩余的信息并将其分割,因此 URI 被指定为 “/chatware/chatroom.php”,主机行将包含“www.myfavoritewebsite.com:8080” 。因此,请求的开始看起来像这样:
GET /chatware/chatroom.php HTTP/1.1 Host: www.myfavoritewebsite.com:8080复制代码
此规则的例外是向代理服务器发出请求时。在这种情况下,请求是使用原始形式的完整 URL 发出的,以便代理可以像原始客户端那样处理它。这个请求看起来是这样的:
GET http://www.myfavoritewebsite.com:8080/chatware/chatroom.php HTTP/1.1复制代码
最后,还有一种特殊情况,可以使用一个星号来代替真正的 URL。这是针对 OPTIONS 方法的,它不需要指定资源。(名义上,星号表示该方法指向服务器本身。)
HTTP 版本 (HTTP Version)
HTTP-VERSION 告诉服务器客户机使用的是什么版本,以便服务器知道如何解释请求,以及在响应中向客户机发送什么和不发送什么。版本以大写字母 “HTTP/1.1” 等发送
作者:恒十七
链接:https://juejin.cn/post/7021511254573318180