http的报文结构和状态码总结

冲天香阵透长安,满城尽带黄金甲。这篇文章主要讲述http的报文结构和状态码总结相关的知识,希望能为你提供帮助。
      为解决"用什么样的网络协议来实现整个因特网上的万维网文档”这一难题,就要使万维网客户程序(以浏览器为主,但不限于浏览器)与万维网服务器程序之间的交互遵守严格的协议,即超文本传送协议(HyperText Transfer Protocol)。HTTP是处于应用层的协议,使用TCP传输层协议进行可靠的传送。因此,需要特别提醒的是,万维网是基于因特网的一种广泛因特网应用系统,且万维网采用的是HTTP(80/TCP)和 HTTPS(443/TCP)的传输协议,但因特网还有其他的网络应用系统(如:FTP、SMTP等)。 

  1. ?http报文结构?
    http报文分请求报文和响应报文。
?1.1 请求报文结构?
    请求报文由开始行、首部行和实体主体三部分构成??(如下图)??。

    由上图可知:
    ①开始行的格式为“方法+空格+URL路径+空格+http版本”,回车换行后进入到首部行。
    ②开始行进入到首部行后,需输入首部字段名,例如http1.1版本要使用host头,加上“:”和空格,并接上对应的值如网址或主机ip等,回车键入下一行后再回车空一行进入实体主体部分。
    ③实体主体部分为数据部分,通常情况下为空,例如我们在浏览网页的时候基本使用的是GET方法。但是当我们使用POST方法等,进行用户名和密*码、文章等数据的上传时,实体主体部分不为空。
?1.2 响应报文结构?
    与请求报文结构类似,响应报文也是由开始行、首部行和实体主体三部分组成??(如下图)??。

    响应报文的开始行又称为状态行,包括http协议的版本、状态码??(响应码)??和解释状态码??(响应码)??的简单短语。响应报文的首部行包括响应时间、web服务器的类型及版本、最后修改日期等。首部行之后会空一行进入到实体主体部分,将数据返回给请求用户。
?1.3 http报文结构范例?
    笔者这边做了一个很简单网页,只在网页中显示“hello world”,通过curl加-v选项去查看网页时能显示详情。客户端去查看网页时,“> ”部分属于请求报文部分,因为使用的是GET方法,所以请求报文的实体主体部分为空;服务器接收到请求后会返回响应报文,为“< ”部分内容,在开始行和首部行之后空一行将网页数据返回给请求用户??(如下图)??。



  1. ?http状态码?
?2.1 http状态码分类??
    http状态码?是用以表示web服务器超文本传输协议响应状态的3位数字代码,大体可分为1-5开头的五类:?
?    ①1开头,例如100-101,属于信息提示,表示请求已被接收,等待进一步的处理;?
?    ②2开头,例如200-206,表示请求已被服务器成功接受、理解或接收;?
?    ③3开头,例如300-307,表示重定向,需要客户端采取进一步的操作才能完成请求;?
?    ④4开头,例如400-415,表示客户端错误;?
?    ⑤5开头,例如500-505,表示服务器在处理请求的过程中发生错误。?
??2.2 常见http状态码??
?状态码?
【http的报文结构和状态码总结】?说明?
200
?(OK)表示请求已成功,请求数据通过响应报文的entity-body部分发送?


301
(Moved Permanently)请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置
302
(Moved Temporarily)响应报文Location指明资源临时新位置
304
(Not Modified)客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端
307
(Temporary Redirect)浏览器内部重定向
401
(Unauthorized)需要输入账号和密码认证方能访问资源
403
(Forbidden)请求被禁止
404
(Not Found)服务器无法找到客户端请求的资源
500
(Internal Server Error)服务器内部错误
502
(Bad Gateway)代理服务器从后端服务器收到了一条伪响应,如无法连接到网关
503
(Service Unavailable)服务不可用,临时服务器维护或过载,服务器无法处理请求
504
(Gateway Timeout)网关超时



    推荐阅读