HTTP是超文本传输协议的英文缩写,是基于TCP/IP通讯协议之上用来传输HTML和图片文件的应用协议,原本是用来从万维网服务器传输超文本到本地浏览器。它是一个应用层面向对象的协议,优点是简捷、快速,适用于分布式超媒体信息系统。于1990年提出,经过多年的完善和扩展已经非常地成熟。HTTP协议主要工作于B-S架构之上,这个时候浏览器作为HTTP的客户端通过URL向HTTP的服务器(web服务器)发送所有请求,web服务器根据接收到的请求后,向客户端发送响应信息。客户端向服务器请求发送时,需要传送请求方法和路径。路径就是URL,而HTTP常用的请求方法为GET和POST方法,每种方法规定了客户端与服务器通讯方式和数据报文。
客户端与服务器的通讯都是通过一个个请求来实现的,一个HTTP请求的消息包括:请求行、请求头部、空行、请求数据四个部分组成的。
服务器收到请求后,需要响应,而响应的消息也由四个部分组成:状态行、消息报头、空行、响应正文。
HTTP1.0定义三种请求方法:GET、POST、HEAD方法。
HTTP1.1又新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE和CONNECT方法。
我们常用的主要是GET和POST方法,GET 方法主要是用于向web服务器请求获取数据和资源,而POST主要是将客户端的数据和资源发送给web服务器到达更新和修改的目的。
请求头包含许多有关的客户端环境和请求正文有用的信息。比如请求头可以声明浏览器所使用的语言,请求正文的长度等。
HTTP的请求头根据实际的需求进行组包,并不是固定的,要进行灵活的处理,例如下:
响应头部和请求头部差不多,用于传递一些附加的信息,每一个响应头都是一个键值对,键和值之间用英文冒号隔开,后面都是一个回车符和与一个换行符,即每个响应头都单独形成一行。下图为一些常见的响应头:
下面是一个完整的请求响应报文: