HTTP报文

1、请求报文

引用两张图

HTTP报文
HTTP报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。
请求行有请求方法、请求URL、请求HTTP协议的版本

请求方法有这么几种:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT

1.1、请求方法:

  • ①、GET传递参数长度受限制,因为传递的参数是直接表示在地址栏中,而特定浏览器和服务器对url的长度是有限制的。因此,GET不适合用来传递私密数据,也不适合拿来传递大量数据。一般的HTTP请求大多都是GET。
  • ②、POST,POST把传递的数据封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,对数据量没有限制,也不会显示在URL中。表单的提交用的是POST。
  • ③、HEAD,HEAD跟GET相似,不过服务端接收到HEAD请求时只返回响应头,不发送响应内容。所以,如果只需要查看某个页面的状态时,用HEAD更高效,因为省去了传输页面内容的时间。
  • ④、DELETE,删除某一个资源。
  • ⑤、OPTIONS,用于获取当前URL所支持的方法。若请求成功,会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
  • ⑥、PUT,把一个资源存放在指定的位置上。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。
  • ⑦、TRACE,回显服务器收到的请求,主要用于测试或诊断。
  • ⑧、CONNECT,CONNECT方法是HTTP/1.1协议预留的,能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接与非加密的HTTP代理服务器的通信。

注意: 目前HTTP时1.1版本,之前的1.0版本只支持GET、POST、HEAD三种HTTP请求方法。

1.2、请求头部
请求头部由关键字/值对组成,每行一对

  • User-Agent : 产生请求的浏览器类型
  • Accept : 客户端希望接受的数据类型,比如 Accept:text/xml(application/json)表示希望接受到的是xml(json)类型
  • Content-Type:发送端发送的实体数据的数据类型。比如,Content-Type:text/html(application/json)表示发送的是html类型。
  • Host : 请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

常见的Content-Type如下图所示
HTTP报文
1.3、空行
请求头之后是一个空行,通知服务器以下不再有请求头

1.4、请求体
GET没有请求数据,POST有。

2、HTTP响应报文

2.1、响应行
响应行一般由协议版本、状态码及其描述组成 比如 HTTP/1.1 200 OK。其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。

2.2、响应头
响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。

2.3、空行
它的作用是通过一个空行,告诉服务器请求头部到此为止。

2.4、响应体
响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。

引用一张图
HTTP报文
摘自:HTTP报文结构和内容