简单理解,更多理解信息参考:HTTP报文详解 - HX_追风 - 博客园 https://www.cnblogs.com/zhuifeng/p/4072248.html
HTTP报文:它是HTTP应用程序之间发送的数据块。
详细说:这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文都是在客户端、服务器、和代理之间的流动。
HTTP报文的执行顺序:
一次HTTP请求,HTTP报文会从
“客户端” --------> "代理" ------------> "服务器"。
在服务器工作完成之后
"服务器" -----------> "代理" ---------------->"客户端"
报文的语法:
1.请求报文 :向web服务器请求的一个动作
格式:
起始行 : <method> <request-URL> <version>
头部 :<headers>
主体 :<entity-body>
2.响应报文 : 它会将请求的结果返回给客户端
格式 :
起始行 :<version> <status> <resason-phrase>
头部 :<headers>
主体 : <entity-body>
展示一些假想请求报文和响应报文
语法的详细介绍:
1.方式<method> : 客户端希望服务器对资源执行的动作,是一个单独的词 如:GET、 POST或HEAD
2.请求URL <request-URL> : 要直接与服务器进行对话,只要请求URL是资源的绝对路径就可以了,服务器可以假定自己是URL的主机端口
3.版本<version> : 报文所使用的HTTP版本 : 格式 :HTTP/<主要版本>.<次要版本>
4.状态码 <status-code> : 状态码是三位数字,描述了请求过程中所发生的情况,每个状态码的第一位数字都用于描述状态的一般类别 (比如 : “成功” 、 “出错”等)
5.原因短语<reason-phrase> : 数字状态码的可读版本,包含行终止序列之前的所有版本。原因短语只对人类有意义,因此尽管响应 HTTP/1.0 200 Not OKk和 HTTP/1.0 200 OK 中间原因短语的含义不同,但同样都会被当做成功指示处理
6.头部<header> : 可以有零个或者多个头部,每一个首部都包含一个名字,后面跟着一个冒号(:)。 然后是一个可选的空壳,接着是一个值,最后是一个(CRLF ) 首部是由一个空行(CRLF)结束的,表示了头部的列表结束和实体的主体部分的开始
7.实体的主体部分 <entity-body>: 实体的主体部分包含一个由任意数据组成的数据块,并不是所有的报文都包含实体的主体部分,有时;报文只是以一个(CRLF)结束