http的报文结构和状态码总结
Posted JohnnyFang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http的报文结构和状态码总结相关的知识,希望对你有一定的参考价值。
为解决"用什么样的网络协议来实现整个因特网上的万维网文档”这一难题,就要使万维网客户程序(以浏览器为主,但不限于浏览器)与万维网服务器程序之间的交互遵守严格的协议,即超文本传送协议(HyperText Transfer Protocol)。HTTP是处于应用层的协议,使用TCP传输层协议进行可靠的传送。因此,需要特别提醒的是,万维网是基于因特网的一种广泛因特网应用系统,且万维网采用的是HTTP(80/TCP)和 HTTPS(443/TCP)的传输协议,但因特网还有其他的网络应用系统(如:FTP、SMTP等)。
- http报文结构
http报文分请求报文和响应报文。
1.1 请求报文结构
请求报文由开始行、首部行和实体主体三部分构成(如下图)。
由上图可知:
①开始行的格式为“方法+空格+URL路径+空格+http版本”,回车换行后进入到首部行。
②开始行进入到首部行后,需输入首部字段名,例如http1.1版本要使用host头,加上“:”和空格,并接上对应的值如网址或主机ip等,回车键入下一行后再回车空一行进入实体主体部分。
③实体主体部分为数据部分,通常情况下为空,例如我们在浏览网页的时候基本使用的是GET方法。但是当我们使用POST方法等,进行用户名和密*码、文章等数据的上传时,实体主体部分不为空。
1.2 响应报文结构
与请求报文结构类似,响应报文也是由开始行、首部行和实体主体三部分组成(如下图)。
响应报文的开始行又称为状态行,包括http协议的版本、状态码(响应码)和解释状态码(响应码)的简单短语。响应报文的首部行包括响应时间、web服务器的类型及版本、最后修改日期等。首部行之后会空一行进入到实体主体部分,将数据返回给请求用户。
1.3 http报文结构范例
笔者这边做了一个很简单网页,只在网页中显示“hello world”,通过curl加-v选项去查看网页时能显示详情。客户端去查看网页时,“>”部分属于请求报文部分,因为使用的是GET方法,所以请求报文的实体主体部分为空;服务器接收到请求后会返回响应报文,为“<”部分内容,在开始行和首部行之后空一行将网页数据返回给请求用户(如下图)。
- 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的报文结构和状态码总结的主要内容,如果未能解决你的问题,请参考以下文章