冲天香阵透长安,满城尽带黄金甲。这篇文章主要讲述http的报文结构和状态码总结相关的知识,希望能为你提供帮助。
为解决"用什么样的网络协议来实现整个因特网上的万维网文档”这一难题,就要使万维网客户程序(以浏览器为主,但不限于浏览器)与万维网服务器程序之间的交互遵守严格的协议,即超文本传送协议(HyperText Transfer Protocol)。HTTP是处于应用层的协议,使用TCP传输层协议进行可靠的传送。因此,需要特别提醒的是,万维网是基于因特网的一种广泛因特网应用系统,且万维网采用的是HTTP(80/TCP)和 HTTPS(443/TCP)的传输协议,但因特网还有其他的网络应用系统(如:FTP、SMTP等)。
- ?http报文结构?
?1.1 请求报文结构?
请求报文由开始行、首部行和实体主体三部分构成??(如下图)??。
由上图可知:
①开始行的格式为“方法+空格+URL路径+空格+http版本”,回车换行后进入到首部行。
②开始行进入到首部行后,需输入首部字段名,例如http1.1版本要使用host头,加上“:”和空格,并接上对应的值如网址或主机ip等,回车键入下一行后再回车空一行进入实体主体部分。
③实体主体部分为数据部分,通常情况下为空,例如我们在浏览网页的时候基本使用的是GET方法。但是当我们使用POST方法等,进行用户名和密*码、文章等数据的上传时,实体主体部分不为空。
?1.2 响应报文结构?
与请求报文结构类似,响应报文也是由开始行、首部行和实体主体三部分组成??(如下图)??。
响应报文的开始行又称为状态行,包括http协议的版本、状态码??(响应码)??和解释状态码??(响应码)??的简单短语。响应报文的首部行包括响应时间、web服务器的类型及版本、最后修改日期等。首部行之后会空一行进入到实体主体部分,将数据返回给请求用户。
?1.3 http报文结构范例?
笔者这边做了一个很简单网页,只在网页中显示“hello world”,通过curl加-v选项去查看网页时能显示详情。客户端去查看网页时,“> ”部分属于请求报文部分,因为使用的是GET方法,所以请求报文的实体主体部分为空;服务器接收到请求后会返回响应报文,为“< ”部分内容,在开始行和首部行之后空一行将网页数据返回给请求用户??(如下图)??。
- ?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)网关超时 |
推荐阅读
- ansible快速部署cassandra3集群
- 深入剖析Nginx调度算法
- 文件管理——命令4
- 部署PXE远程安装服务
- 安装PXE
- #yyds干货盘点#Linux文件目录核心命令
- 详解双向循环带头节点链表——十分钟单手吊打链表
- 彻底解决虚拟机浏览器设置扩展等花屏空白不显示问题
- 常用I/O模型及比较说明