http(hyper text transfer protocol)超文本传输协议,实现服务端与客户端之间的数据传输。它可传输任意类型的数据,例如文本、html、图片、文件声音等等。如下图所示。
- 简单快速:客户端请求服务器端数据时,只需传输请求的方法、路径和参数,使用简单,通信速度快。
- 无连接:每次请求后,服务端和客户端会话立即断开。
- 无状态:http协议不记录用户请求的身份,对于服务端来说,每次请求都是独立的。
- 可传递任意类型的数据:http允许传输任意类型的数据,只需在操作时使用请求头中的content-type字段进行标识。
- 一对一通信:http请求中的每次请求都是一个客户端对应一个服务端。
http请求由request和response两部分组成。每一个http请求都是请求和响应。请求是客户端告诉服务端自己想要什么,响应是服务端告诉客户端能给客户端什么。
request包括以下几部分内容
- 请求行
- 报文头
- 空行
- 请求正文
请求行
其中请求行包括以下内容
- 请求类型,例如get、post、put等
- 请求的url地址,例如www.baidu.com
- 请求的http协议版本,如图所示的http/1.1
请求头
请求头在发送请求时,描述请求的一些信息。常用的报文头有以下几种。
- host:表示服务器端的地址和端口号。
- content-type:用于描述请求正文中的数据类型,常见的类型有:json
格式的 application/json、表单格式的 application/x-www-form-urlencoded、文件格式的
multipart/form-data 等。 - content-length:用于描述请求正文中的数据长度,需要注意的是,这里的数据长度统计单位为字节而非字符。
- user-agent:用户代理信息,例如访问用户的系统信息,浏览器类型和版本信息等。
空行
一个没有任何内容的空行,用于分隔请求报头和请求正文的特殊组成部分。
请求正文
实际需要传输的参数。
响应对象包括以下四个部分,如下图所示。
- 状态行
- 响应报文头
- 空行
- 响应正文
状态行
反馈服务器返回内容的状态。与请求行类似。
- http版本号,如http/1.1
- 状态码,如200
- 状态描述信息,如ok
常见的状态码有以下几种
- 200:返回成功。
- 301:永久重定向。
- 302:临时重定向。
- 404:未找到页面。
- 500:服务器程序出错。
报文头
响应头和请求头类似,用于描述正文类型的扩展信息。