1.HTTP用于客户端和服务器之间的通信
在两台计算机之间使用 HTTP 协议通信时, 在一条通信线路上必定有一端是客户端, 另一端则是服务器端。
2.HTTP是不保存状态的协议
图: HTTP 协议自身不具备保存之前发送过的请求或响应的功能
HTTP/1.1 虽然是无状态协议, 但为了实现期望的保持状态功能, 于是引入了 Cookie 技术。 有了 Cookie 再用 HTTP 协议通信, 就可以管理状态了。
3.请求URI定位资源
如果不是访问特定资源而是对服务器本身发起请求,可以 用一个 * 来代替请求 URI。下面这个例子是查询 HTTP 服务器端支持 的 HTTP 方法种类。
4.告知服务器意图的HTTP方法
GET:获取资源
请求的资源是文本,就保持原样返回
请求如果是CGI(Common Gateway Interface,通用网关接 口)那样的程序,则返回经过执行后的输出结果。
POST:传输实体主体
POST 的功能与 GET 很相似,但 POST 的主要目的并不是获取响应的主体内容。
HEAD:获得报文首部
HEAD 方法和 GET 方法一样,只是不返回报文主体部分。用于确认 URI 的有效性及资源更新的日期时间等。
DELETE:删除文件
DELETE 方法用来删除文件,是与 PUT 相反的方法。DELETE 方法按 请求 URI 删除指定的资源。
一般的 Web 网站也不使用 DELETE 方法。
当配合 Web 应用 程序的验证机制,或遵守 REST 标准时还是有可能会开放使用的。
OPTIONS:询问支持的方法
OPTIONS 方法用来查询针对请求 URI 指定的资源支持的方法。
5.持久连接节省通信量
HTTP 协议的初始版本中,每进行一次 HTTP 通信就要断开一次 TCP 连接。
现在使用浏览器浏览一个包含多张图片的HTML页面时,请求HTML页面资源的同时,也会请求到HTML页面里面包含的其他资源。因此,每次的请求都会造成无谓的 TCP 连接建立和断 开,增加通信量的开销。
6.持久连接
持久连接的特点是,只要任意一端 没有明确提出断开连接,则保持 TCP 连接状态。
管线化:
管线化能做到同时并行发送多个请求,不需要一个接一个地等待响应。
7.使用Cookie的状态管理
Cookie 技术通过在请求和响应报文中写入 Cookie 信 息来控制客户端的状态。
Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出 去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一 个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前 的状态信息。
HTTP请求报文和响应报文内容: