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的报文结构和状态码总结的主要内容,如果未能解决你的问题,请参考以下文章

简述HTTP报文请求方法和状态响应码

了解HTTP协议

了解HTTP协议

图解HTTP—— HTTP协议

第三章 http报文

HTTP基础知识归纳