目前 HTTP 协议使用的最多的是 1.1 版本。
HTTP 1.0 与 HTTP 1.1 的区别
1、HTTP 1.1 支持长连接和请求流水线
1.0 只能使用短连接,每次请求完成后断开连接,新的请求需要重建新的连接。而 1.1 则支持长连接(持久连接,Persistent Connection),所以可以在一个连接中传送多个请求和响应,并且可以同时进行。
2、HTTP 1.1 增加 Host 字段
由于 HTTP 1.0 不支持 Host 请求头字段,浏览器无法使用主机头名来明确表示要访问服务器上的哪个 WEB 站点,这样就无法使用 WEB 服务器在同一个 IP 地址和端口号上配置多个虚拟 WEB 站点。1.1 则解决了这个问题。
3、HTTP 1.1 增加了一些新的状态代码,如 100(Continue)、101(Switching Protocols)等
4、HTTP 1.1 新增了 RANGE:bytes,用于断点续传。
5、HTTP 1.1 还提供了与身份认证、状态管理和 Cache 缓存等机制相关的请求头和响应头。
请求
标准协议支持六种请求方法:GET、HEAD、PUT、DELETE、POST、OPTIONS,与 CRUD 的对应关系是:PUT-->CREATE,GET-->READ,POST-->UPDATE,DELETE-->DELETE。
GET 可以直接写 URL 地址处传递数据,因为它没有消息体,需要传输的数据参数只能通过 URL 地址传递。
POST 可以插入消息体,所以客服端向服务端传递数据时可以通过这个消息体传递。
状态消息
当浏览器从 web 服务器请求服务时,服务器会返回状态消息,主要有几类:
1xx(信息)、2xx(成功)、3xx(重定向)、4xx(客户端错误)、5xx(服务器错误)。
HTTP 请求消息的结构
包括请求行、消息头、空行、消息体。
请求行只能通过一行发送,如:GET /index.html HTTP/1.1
消息头一般包括浏览器信息、用户认证等附加信息
空行用于在有消息体时与消息头分开;
消息体中装有客户端向服务端传输的数据,GET 没有消息体,POST 有消息体。
HTTP 响应消息的结构
包括状态行、消息头、空行、消息体。
状态行包含客服端请求的处理结果。
|