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

Posted JohnnyFang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http的报文结构和状态码总结相关的知识,希望对你有一定的参考价值。

    为解决"用什么样的网络协议来实现整个因特网上的万维网文档”这一难题,就要使万维网客户程序(以浏览器为主,但不限于浏览器)与万维网服务器程序之间的交互遵守严格的协议,即超文本传送协议(HyperText Transfer Protocol)。HTTP是处于应用层的协议,使用TCP传输层协议进行可靠的传送。因此,需要特别提醒的是,万维网是基于因特网的一种广泛因特网应用系统,且万维网采用的是HTTP(80/TCP)和 HTTPS(443/TCP)的传输协议,但因特网还有其他的网络应用系统(如:FTP、SMTP等)。 

  1. http报文结构

    http报文分请求报文和响应报文。

1.1 请求报文结构

    请求报文由开始行、首部行和实体主体三部分构成​(如下图)​。

http的报文结构和状态码总结_响应报文

    由上图可知:

    ①开始行的格式为“方法+空格+URL路径+空格+http版本”,回车换行后进入到首部行。

    ②开始行进入到首部行后,需输入首部字段名,例如http1.1版本要使用host头,加上“:”和空格,并接上对应的值如网址或主机ip等,回车键入下一行后再回车空一行进入实体主体部分。

    ③实体主体部分为数据部分,通常情况下为空,例如我们在浏览网页的时候基本使用的是GET方法。但是当我们使用POST方法等,进行用户名和密*码、文章等数据的上传时,实体主体部分不为空。

1.2 响应报文结构

    与请求报文结构类似,响应报文也是由开始行、首部行和实体主体三部分组成​(如下图)​。

http的报文结构和状态码总结_首部_02

    响应报文的开始行又称为状态行,包括http协议的版本、状态码​(响应码)​和解释状态码​(响应码)​的简单短语。响应报文的首部行包括响应时间、web服务器的类型及版本、最后修改日期等。首部行之后会空一行进入到实体主体部分,将数据返回给请求用户。

1.3 http报文结构范例

    笔者这边做了一个很简单网页,只在网页中显示“hello world”,通过curl加-v选项去查看网页时能显示详情。客户端去查看网页时,“>”部分属于请求报文部分,因为使用的是GET方法,所以请求报文的实体主体部分为空;服务器接收到请求后会返回响应报文,为“<”部分内容,在开始行和首部行之后空一行将网页数据返回给请求用户​(如下图)​。

http的报文结构和状态码总结_首部_03


  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状态码

状态码

说明

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)网关超时


以上是关于http的报文结构和状态码总结的主要内容,如果未能解决你的问题,请参考以下文章