HTTP协议是作用于客户端和服务端的通信,而客户端和服务端是一个相对的角色,但是必须要通过请求和响应的交换来达成通信,而且HTTP协议规定,肯定是客户端先发出请求建立通信,服务器在没有接收到请求时是不会发送响应的。
请求报文是由请求方法、请求URI、协议版本、请求首部字段和内容实体构成的。
下面则是客户端给某个服务器端发送请求报文的格式:
接收到请求的服务器,会将请求内容的处理结果以响应的形式返回给服务器。
响应报文基本上由协议版本、状态码、状态码的原因短语和可选的响应首部字段以及实体主体构成。
以下是响应报文的构成的格式:
因为HTTP协议是不保存状态的协议,就是说自身不会对请求和响应之间的通信状态进行保存,这样会加快处理大量事物的速度,确保协议的可伸缩性。
因为HTTP协议是使用URI定位互联网上的资源,所以在互联网上的任意资源都可以用URI搜索到。指定请求URI的方式有两种:
URI为完整的请求URI |
GET http://hackr.jp/index.htm HTTP/1.1 |
在首部字段HOST中写明网络域名或IP地址 |
GET /index.htm HTTP/1.1 Host: hackr.jp |
其中,告知服务器意图的HTTP方法如下表:
方法 |
说明 |
支持的HTTP协议版本 |
GET |
获取资源 |
1.0/1.1 |
POST |
传输实体主体 |
1.0/1.1 |
PUT |
传输文件 |
1.0/1.1 |
HEAD |
获得报文首部 |
1.0/1.1 |
DELETE |
删除文件 |
1.0/1.1 |
OPTIONS |
询问支持的方法 |
1.1 |
TRACE |
追踪路径 |
1.1 |
CONNECT |
建立和资源之间的联系 |
1.1 |
HTTP1.1相比起HTTP1.0来说,多了持续连接和管线化的特性,持续连接可以减少因为每次对话断开和连接的开销,而管线化可以实现并发发送多个请求的功能。
因为HTTP协议是一种无状态协议,所以为了实现保持登录状态的功能,引进了Cookie的技术。
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会根据服务端发送的响应报文内的一个叫做"Set-Cookie"的首部字段信息,通知客户端保存Cookie。当下次客户端再次发送请求时,客户端会自动在请求报文中加入Cookie值后发送给服务端,服务端接收到客户端发送过来的Cookie之后,会去检查此Cookie是从哪个客户端发过来的,然后对于服务器之前的数据,最后得到之前客户端的状态信息。