HTTP请求报文
一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。
1.请求行
请求行由请求方法字段
、URL字段
和HTTP协议版本字段
3个字段组成,它们用空格分隔。比如 GET /data/info.html HTTP/1.1
方法字段就是HTTP使用的请求方法,比如常见的GET/POST
HTTP协议版本有两种:HTTP1.0/HTTP1.1 可以这样区别:
HTTP1.0对于每个连接都只能传送一个请求和响应,请求就会关闭,HTTP1.0没有Host字段;而HTTP1.1在同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,HTTP1.1必须有Host字段。
2.请求头部
HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说 Content-Length必须出现。
常见的请求头字段含义:
常用的HTTP请求头与响应头
3.空行
它的作用是通过一个空行,告诉服务器请求头部到此为止。
4.请求数据
若方法字段是GET,则此项为空,没有数据
若方法字段是POST,则通常来说此处放置的就是要提交的数据
比如要使用POST方法提交一个表单,其中有user字段中数据为“admin”, password字段为123456,那么这里的请求数据就是 user=admin&password=123456,使用&来连接各个字段。
总的来说,HTTP请求报文格式就如下图所示
上面是POST方法,它的请求行URL段中一般是没有参数的,参数放在了报文体中。而GET方法的参数直接置于请求行URL中,报文体则为空。
HTTP响应报文
同样的,HTTP响应报文也由四部分组成:响应行、响应头、空行、响应体
1.响应行
响应行一般由协议版本
、状态码
及其描述
组成 比如 HTTP/1.1 200 OK
其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。
2.响应头
响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。
设置HTTP响应头往往和状态码结合起来。例如,有好几个表示“文档位置已经改变”的状态代码都伴随着一个Location头,而401(Unauthorized)状态代码则必须伴随一个WWW-Authenticate头。然而,即使在没有设置特殊含义的状态代码时,指定应答头也是很有用的。应答头可以用来完成:设置Cookie,指定修改日期,指示浏览器按照指定的间隔刷新页面,声明文档的长度以便利用持久HTTP连接,……等等许多其他任务。
常见的响应头字段含义:
常用的HTTP请求头与响应头
3.空行
它的作用是通过一个空行,告诉服务器请求头部到此为止。
4.响应体
响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。
HTTP响应报文格式就如下图所示