阅读 177

HTTP 的请求行格式

请求行

所有 HTTP 报文的起始行,在请求消息中叫做请求行,请求行有三个目的:

  1. 表明客户端想要执行的命令/动作

  2. 说明应该在哪个资源上执行动作

  3. 客户端在使用的 HTTP 版本

请求行的语法应该是这样的:

<METHOD> <request-uri> <HTTP-VERSION>复制代码

方法 (METHOD)

METHOD 是客户端希望服务端采用的操作类型,它总是用大写字母指定。HTTP/1.1 定义了 8 中方法,其中 GETHEAD 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


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐