客户端和服务器之间的通信
HTTP协议和TCP/IP协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。
客户端:请求访问文本或图像等资源的一端称为客户端。
服务端:提供资源响应的一端。
请求和响应
HTTP协议规定,请求有客户端发出,最后服务器响应该请求并返回。
1.发送请求
GET / HTTP/1.1
Host: www.xxx.com
2.发送响应
HTTP/1.1 200 OK
Date: Tue, 10 Jul 2015 06:50:15 GMT
Content-Length: 362
Content-Type: text/html
下面是个请求报文例子:
GET /index.htm HTTP/1.1
Host: www.xxx.com
起头的GET表示请求访问服务器的类型,称为方法(method)。随后字符串index.htm指明了请求访问的资源对象,也叫做请求URI(request-URI)。最后的HTTP/1.1,即HTTP的版本号,用来提示客户端使用的HTTP协议功能。
请求报文是有请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成。
POST(method) /index.htm(URI) HTTP/1.1(协议版本)
------------------------------------------------------
(实体)
Host: www.xxx.com
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 310
------------------------------------------------------
(内容实体)
userId=3076&name=leo
在服务器接收到请求报文后,经过处理以响应报文的形式返回。
HTTP/1.1 200 OK
Date: Tue, 10 Jul 2015 16:50:15 GMT
Content-Length: 362
Content-Type: text/html
<html>
......
</html>
起头的HTTP/1.1表示表示服务器对应的HTTP版本。
200 OK表示服务器处理结果的状态吗(status code)和原因短语(reason-phrase)。下一行显示了创建响应的日期时间,是首部字段(header field)内的一个属性。
接着空一行分隔,之后内容为资源实体的主体(enity body)。
响应报文基本上有协议版本、状态码(表示请求成功或者失败的数字代码)、用以解释状态吗的原因短语、可选的响应首部字段以及实体主体构成。