第二章 简单的HTTP协议

2022-01-21  本文已影响0人  飘摇的水草

本章将针对 HTTP 协议结构进行讲解,主要使用HTTP/1.1版本

通过请求和响应的交换达成通信

下面,我们来看一个具体的示例。

下面则是从客户端发送给某个 HTTP 服务器端的请求报文中的内容。

起始行开头的GET表示请求访问服务器的类型,称为方法 (method)。随后的字符串 /index.htm 指明了请求访问的资源对象,也叫做请求 URI(request-URI)。最后的 HTTP/1.1,即 HTTP 的版本号,用来提示客户端使用的 HTTP 协议功能。
综合来看,这段请求内容的意思是:请求访问某台 HTTP 服务器上的 /index.htm 页面资源。

请求
响应

接收到请求的服务器,会将请求内容的处理结果以响应的形式返回。

  1. 在起始行开头的 HTTP/1.1 表示服务器对应的 HTTP 版本。
  2. 紧挨着的 200 OK 表示请求的处理结果的状态码(status code)和原因短语(reason-phrase)。下一行显示了创建响应的日期时间,是首部字段(header field)内的一个属性。
  3. 接着以一空行分隔,之后的内容称为资源实体的主体(entity body)。

响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代
码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主
体构成。

HTTP 是不保存状态的协议

HTTP 是一种不保存状态,即无状态(stateless)协议。HTTP 协议自身不对请求和响应之间的通信状态进行保存。每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。但因无状态而导致业务处理变得棘手的情况增多了。为了实现期望的保持状态功能,HTTP/1.1 虽然是无状态协议,但引入了 Cookie 技术。有了 Cookie 再用 HTTP 协议通信,就可以管理状态了。

HTTP方法
GET :获取资源

如以下请求响应的例子

类型 结果
请求 GET /index.html HTTP/1.1
Host: www.hackr.jp
响应 返回index.html的页面资源
POST:传输实体主体

下面是POST的例子

类型 结果
请求 POST /submit.cgi HTTP/1.1
Host: www.hackr.jp
Content-Length: 1560(1560字节的数据)
响应 返回index.html的页面资源
PUT:传输文件
HEAD:获得报文首部

使用 HEAD 方法的请求·响应的例子

类型 结果
请求 HEAD /index.html HTTP/1.1
Host: www.hackr.jp
响应 返回index.html有关的响应首部
DELETE:删除文件
OPTIONS:询问支持的方法

使用 OPTIONS 方法的请求·响应的例子

TRACE:追踪路径
CONNECT:要求用隧道协议连接代理
image image
持久连接节省通信量
image
持久连接
管线化
使用 Cookie 的状态管理
上一篇下一篇

猜你喜欢

热点阅读