HTTP 报文请求,响应格式
Http协议
文章目录
HTTP请求报文格式
本博客文章内容来源于<<深入理解计算机网络>> 王达著
在建立好TCP传输连接后,Web客户端首先要进行的是向Web服务器发送HTTP请求报文,请求打开指定的网站或页面。一个HTTP请求报文包括请求行(request line)、请求头部(request header)行、空行和实体主体(entity body)行4个部分,如图11-5所示。HTTP报文(HTTP请求报文和11.2.9节将要介绍的HTTP响应报文)中各字段是没有固定长度的。下面对这4个组成部分分别进行说明。
1.请求行
HTTP请求报文中的“请求行”是由“请求方法”、“URL”和“协议版本”3个字段组成的,它们之间均以空格进行分隔。这部分是必不可少的。在请求行的最后有一个回车控制符和一个换行控制符(一起以“CRLF”表示),使下面的请求头部信息在下一行显示。
2.请求头部行
HTTP请求头部包括一系列的“请求头”和它们所对应的值,指出允许客户端向服务器传递请求的附加信息以及客户端自身的信息。当打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容并发送给浏览器,这就是HTTP请求报文中的“请求头”的作用。
HTTP请求报文的“请求头部”是由一系列的行组成的,每行包括“头部字段名”和“值”两个字段,它们之间用英文冒号“:”分隔,但也可以没有“请求头部”。每一行的最后都有一个回车控制符和一个换行控制符(一起以“CRLF”表示),使下一个请求头在下一行显示。许多请求头都允许客户端指定多个可接收的“值”字段选项,有时甚至可以对这些“值”字段选项进行排名,多个选项间以逗号分隔。典型的HTTP请求头如表11-3所示
4.实体主体行
请求报文中“实体主体”部分通常是不用的。它不能在GET方法中使用,仅在POST方法中用于向服务器提供一些用户凭据信息。
HTTP响应报文格式
Web服务器收到客户端发来的HTTP请求报文,通过服务器处理后会返回一个HTTP响应报文给请求的客户端,以告知客户端Web服务器对客户端请求所做出的处理。如是否允许此次请求的HTTP连接,出现了什么连接错误,错误代码和错误原因等。HTTP响应报文也是由四部分组成,分别是响应行(Response)、响应头部(Response Header)行、空行和实体主体行,如图11-6所示。
HTTP响应报文中的“空行”部分只有一个回车控制符和一个换行控制符,其目的就是空一行显示下面的主体信息。“实体主体行”部分也基本不用。下面分别介绍“响应行”和“响应头部行”
1.响应行
在HTTP响应报文的“响应行”中主要有3个字段,分别是“协议版本”、“状态码”和“描述短语”,它们之间用空格分隔。最后还有一个回车控制符和一个换行控制符(一起用“CRLF”表示)。其中“协议版本”字段用来显示Web服务器使用的HTTP版本。“状态码”字段比较重要。它用一个3位数表示不同的状态,如请求是否被接受,如果没有被接受原因是什么,共有5组取值,如表11-4所示。“描述短语”字段是对应状态码的简短描述。
“响应行”的最后也是一个回车控制符和一个换行控制符,然后换行进入到下面的“响应头部行”部分
2.响应头部行
HTTP响应报文中的“响应头部行”允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对URI所标识的资源进行下一步访问的信息。
HTTP响应报文的“响应头部行”由一系列行组成,每行包括“头部字段名”和“值”两个字段,它们之间用英文冒号“:”分隔。每一行的最后都有一个回车控制符和一个换行控制符,使下一个响应头在下一行显示。许多响应头都允许服务器指定多个返回的“值”字段选项,有时甚至可以对这些选项的“值”字段选项进行排名,多个选项间以“/”分隔。典型的HTTP响应头如表11-5所示。
4.实体主体行
请求报文中“实体主体”部分通常是不用的。它不能在GET方法中使用,仅在POST方法中用于向服务器提供一些用户凭据信息。