HTTP报文:它是HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文都是在客户端、服务器和代理之间流动。
报文的语法:所有的HTTP报文都可以分为两类,请求报文和响应报文。请求和响应报文的基本报文结构大致是相同的,只有起始行的语法有所不同。
报文分为请求报文和响应报文。
请求报文:它会向Web服务器请求一个动作
请求报文的格式:
起始行: <method> <request-URL> <version>
头部: <headers>
主体: <entity-body>
响应报文:它会将请求的结果返回给客户端。
响应报文的格式:
起始行: <version> <status> <reason-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 OK和HTTP/1.0 200 OK中原因短语的含义不同,但同样都会被当作成功指示处理。
6、头部(header):可以有零个或多个头部,每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个CRLF首部是由一个空行(CRLF)结束的,表示了头部列表的结束和实体主体部分的开始。
7、实体的主体部分(entity-body):实体的主体部分包含一个由任意数据组成的数据块,并不是所有的报文都包含实体的主体部分,有时,报文只是以一个CRLF结束。
常见的HTTP请求头属性
1.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept:告诉服务端,该请求所能支持的响应数据类型,专业术语称为MIME 类型,上图中表示支持text/html的响应格式.
2.Cookie:seraph.confluence=6389808%3A04c906749aac37bbfe595ff3149ac5c17bfcd298;Hm_lvt_4a7d8ec50cfd6af753c4f8aee3425070=1477401172,1479201037,1479895114; _ga=GA1.2.1021401543.1477401172; JSESSIONID=6C331887C562AF7839384C41D590CA9A;
Cookie:将客户端的cookie放在请求头里一并发送给服务器端.
3.referer:https://www.baidu.com/linkurl=fjKPqTaoZV2a2g2H2kbBwdz0mgBgI06WLrVLrQhiKgu&wd=&eqid=841d77d20000a7ae00000004586b7070
Referer:表示这个请求是从哪个url跳过来的,通过百度来搜索淘宝网,那么在进入淘宝网的请求报文中,Referer的值就是:www.baidu.com
4.Cache-Control:max-age=0
Cache-control:对服务端返回的相应内容进行缓存控制,即是否需要在客户端保存下来,如上表示不缓存.
5.User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
User-Agent:用户代理,简称 UA,是一个特殊字符串头,使得服务器能够识别客户端使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等信息
6.Connection:keep-alive
Connection:表示客户端与服务连接类型;Keep-Alive表示持久连接
状态码:HTTP状态码被分成了五大类。状态码为客户端提供了一种理解事务处理结果的便捷方式。
1、100~199(信息性状态码):HTTP/1.1向协议中引入了信息性状态码
2、200~299(成功状态码):客户端发起请求时,这些请求通常都是成功的。服务器有一组用来表示成功的状态码,分别对应于不同类型的请求
3、300~399(重定向状态码):重定向状态码要么告知客户端使用替代位置来访问他们所感兴趣的资源,要么就提供一个替代的响应而不是资源的内容
4、400~499(客户端错误状态码):有时客户端会发送一些服务器无法处理的东西。浏览网页时,我们都看到过臭名昭著的404 Not Found错误码,这只是服务器在告诉我们,它对我们请求的资源一无所知
5、500~599(服务器错误状态码):有时客户端发送了一条有效请求,服务器自身却出错了,这些会返回5xx状态码
参考链接:https://www.cnblogs.com/zhuifeng/p/4072248.html
原文出处:https://www.cnblogs.com/PrayLs/p/10263069.html
来源:oschina
链接:https://my.oschina.net/u/4302665/blog/3271113