码迷,mamicode.com
首页 > Web开发 > 详细

Http协议--请求报文和响应报文

时间:2017-12-07 17:30:34      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:属性   网站   客户端   响应头   绝对路径   过程   参数   指示   www   

       http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过http协议做一个类似于解码的工作,这样浏览器才能理解这个数据,然后为我们展示出来百度首页.

  这相当于是一种规范,网络中数据的传输在位于应用之下的各层(传输层,应用层)来完成的,在tcp/ip协议接收到数据时,我们是不能直接使用和浏览的,需要先通过一种规范来进行梳理,也就是解码,得到浏览器支持的一种格式,才能被我们使用.

  在web开发中,熟悉http协议中的报文结构是很重要的,比如,如果对http报文不熟悉,在使用httpServletRequest很多方法的时候,就会陷入懵逼.

  http报文分为请求报文和响应报文.

请求报文(request message)

  请求报文分为三部分:首行,请求头,请求体.

  首行包括:请求类型,URL,HTTP版本.

  请求头部保存一些键值对的属性.

  请求体保存具体内容,一般为POST类型的参数.

  技术分享图片

下面是对各部分的简要描述:

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结束。

响应报文(response message)

  响应报文也由三部分组成,首行,响应头,响应体.

  首行分为报文协议及版本,响应码及状态描述

  技术分享图片

  状态码

1XX:信息性状态码

2XX:成功状态码,200 表示成功

3XX:重定向状态码

4XX:客户端错误状态码,404表示没有找到请求的资源

5XX:服务器端错误状态码,500表示内部错误

  关于响应报文的响应头属性,可以详见上面那个对照表链接.

  需要提一下的是,我们可以通过HttpServletResponse的setHeader()方法来自行添加响应头属性.

 

转载自:https://www.cnblogs.com/fingerboy/p/6245882.html

Http协议--请求报文和响应报文

标签:属性   网站   客户端   响应头   绝对路径   过程   参数   指示   www   

原文地址:http://www.cnblogs.com/dreamingbaobei/p/7999613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!