HTTP的报文与状态码
本文是《HTTP权威指南》的读书笔记
HTTP报文是简单的格式化数据块。每条报文都包含一条来自客户端的请求或一条来自服务器的响应。它们由三部分组成:
- 对报文进行描述的起始行(start line);
- 包含属性的首部块(head);
- 可选的,包含数据的主体(body)部分;
请求报文的格式与响应报文的格式稍有不同:
- 请求报文的格式为:
<method><request-URL><version>
<headers>
<entity-body>
- 响应报文的格式为:
<version><status><reason-phrase>
<headers>
<entity-body>
报文各部分的简要描述:
method,客户端希望服务器对资源执行的动作,如GET,HEAD,POST等;requset-URL,命名所请求的资源;version,报文所使用的HTTP的版本;status,状态码,用三位数字描述请求过程中所发生的情况,如200,表示请求成功;reasuon-phrase,前面状态码的可读短语;headers,首部,可以有零个或多个首部,每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个CRLF;entity-body,主体部分,包含一个由任意数据组成的数据块;
常用的HTTP方法:
| 方法 | 描述 | 是否包含主体 |
|---|---|---|
| GET | 从服务器获取信息 | 否 |
| HEAD | 只从服务器获取信息的首部 | 否 |
| POST | 向服务器发送需要处理的数据 | 是 |
| TRACE | 对可能经过代理服务器传到服务器上去的报文进行追踪 | 否 |
| PUT | 将请求的主体存储在服务器上 | 是 |
| OPTIONS | 决定可以在服务器上执行哪些方法 | 否 |
| DELETE | 从服务器上删除一份文档 | 否 |
HTTP定义了一组称为安全方法的方法:GET和HEAD,因为这两个方法都不会在服务器上产生什么结果(不会对服务器上的资源进行更改,删除等);TRACE方法允许客户端在最终将请求发送给服务器时,看看它变成什么样子了(发起一个请求时,这个请求可能会经过一系列的中间节点,如代理,防火墙等,每个中间节点都可能会修改原始的HTTP请求;)
状态码用来描述请求过程发生的情况,状态码的分类:
| 整体范围 | 已定义范围 | 分类 |
|---|---|---|
| 100~199 | 100~101 | 信息提示 |
| 200~299 | 200~206 | 成功 |
| 300~399 | 300~305 | 重定向 |
| 400~499 | 400~415 | 客户端错误 |
| 500~599 | 500~505 | 服务器错误 |
最常见的状态码:
| 状态码 | 原因短语 | 含义 |
|---|---|---|
| 200 | OK | 成功,请求的所有数据都在响应主体中 |
| 401 | Unauthorized(未授权) | 需要输入用户名和密码 |
| 404 | Not Found(没有找到) | 服务器无法找到请求URL所对应的资源 |
状态码的详细信息:
1. 100~199信息状态码
| 状态码 | 原因短语 | 含义 |
|---|---|---|
| 100 | Continue | 收到请求的初始部分,请客户端继续 |
| 101 | Switching Protocols | 服务器将根据客户端的指定,将协议切换为Update首部所列的协议 |
对于100状态码的使用,如果客户端想向服务器发送一个实体,但不知道服务器是否可以接受,则可以发送带有100状态码的请求,服务器收到这个状态杩的请求后,根据自己的情况,对这个请求进行响应;
2. 200~299 成功状态码
| 状态码 | 原因短语 | 含义 |
|---|---|---|
| 200 | OK | 请求成功,所有数据都在响应主体中 |
| 201 | Created | 用于创建服务器对象的请求,服务器必须在发送这个状态码之前创建好对象 |
| 202 | Accepted | 请求已接受,但服务器还未对其执行任何动作 |
| 203 | Non-Authoriative | 实体首部所包含信息不是来自源端服务器,是资源的一个副本 |
| 204 | No Content | 响应报文中没有主体的实体部分,只有首部与状态行; |
| 205 | Reset Content | 让浏览器清除当前页面的所有HTML表单元素 |
| 206 | Parial Content | 成功执行了一个部分请求 |
3. 300~399 重定向状态码
| 状态码 | 原因短语 | 含义 |
|---|---|---|
| 300 | Multiple Choice | 客户端请求一个实际指向多个资源的URL时返回这个状态码,让用户进行选择 |
| 301 | Moved Permanently | 在请求的URL已被移除时使用,响应的首部会包含资源现在所处的URL |
| 302 | Found | 与301类似,使用首部给出的URL来临时定位资源,但将来的请求仍使用老的URL |
| 304 | Not Modified | 带这个状态码的响应不会包含实体的主体部分 |
| 305 | Used Proxy | 说明必须通过代理来访问资源,代理位置由Location首部给出 |
| 307 | Temporaty Redirect | 与302类似 |
4.400-499 客户端错误状态码
| 状态码 | 原因短语 | 含义 |
|---|---|---|
| 400 | Bad Request | 发送了一个错误的请求 |
| 401 | Unauthorized | 在得到资源前,需要对客户端的身份进行验证 |
| 402 | Payment Required | 保留,还未使用 |
| 403 | Forbidden | 请求被拒绝 |
| 404 | Not Found | 请求的资源没有找到 |
| 405 | Method Not Allowed | 使用不被允许的方法对资源进行访问,响应的Allows首部会包含可以使用的方法 |
| 406 | Not Acceptable | 客户端指定参数说明它们可以接收什么类型的实体,服务器没有客户端所希望的类型的资源时,返回该状态码 |
| 407 | Proxy Authentication Required | 与401类似,用于要求对资源认证的代理服务器 |
| 408 | Request Timeout | 请求超时 |
| 409 | Conflict | 请求可能会在资源上引发冲突,响应中会包含描述冲突的主体 |
| 410 | Gone | 与404类似,但服务器曾经存在该资源 |
| 411 | Length Required | 服务器要求请求报文中包含Content-Length首部时使用 |
| 412 | Proconditin Failed | 客户端发起条件请求,但其中一个条件失败了 |
| 413 | Request Entity Too Large | 客户端发送的实体比服务器希望处理的要大 |
| 414 | Request URI Too Long | 请求URI过长 |
| 415 | Unsupported Media Type | 服务器无法支持客户端所发实体的内容类型 |
| 416 | Request Range Not Satisfiable | 请求的范围无效或无法满足 |
| 417 | Expectation Failed | 服务器无法满足请求报文中Except首部中的期望 |
5.500~599 服务器错误状态码
| 状态码 | 原因短语 | 含义 |
|---|---|---|
| 500 | Internal Server Error | 服务器遇到一个妨碍它为请求提供服务的错错误 |
| 501 | Not Implemented | 请求超出服务器的能力范围(如,使用了服务器不支持的请求方法) |
| 502 | Bad Gateway | 代为代理或网关的服务器无法连接到其父网关 |
| 503 | Service Unavailable | 服务器现在无法为请求提供服务 |
| 504 | Gateway Timeout | 网关或代理在请求另一服务器响应时超时了 |
| 505 | HTTP Version Not Supported | 服务器无法或不愿支持请求的协议版本 |
HTTP的报文与状态码的更多相关文章
- HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结
HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GE ...
- HTTP请求响应报文 - 相关状态码 - GET_POST请求方法
HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET ...
- 《图解Http》 2-6章: 基础,报文,状态码,首部。
HTTP协议和Cookie 是stateless协议,自身不对请求和响应之间的通信状态进行保存.但随着技术发展,为了实现保存状态的功能,引入了Cookie技术. Cookie在请求和响应报文中写入信息 ...
- HTTP权威指南-报文与状态码
所有的报文都向下流动 报文流向 报文组成 HTTP方法 状态码 GET示例 HEAD示例 100~199 信息性状态码 200~299 成功状态码 300~399重定向状态码 400~499 客户端错 ...
- HTTP响应报文应答状态码及含义
本应答报文状态码是老猿结合多方资料收集综合后并加以老猿自己的理解进行说明的应答报文状态码,应该是最新最全解释最详尽的,供大家参考:
- Http报文 状态码
一.HTTP报文 1.HTTP报文介绍 HTTP报文:用于HTTP协议交互的信息. HTTP报文由报文头部和报文主体(非必须)构成,中间由空行来分隔. 1.1 请求报文:客户端发起的报文. 1).报文 ...
- HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...
- http的报文结构和状态码的含义
HTTP响应报文解剖 响应报文结构 HTTP的响应报文也由三部分组成(响应行+响应头+响应体): 以下是一个实际的HTTP响应报文: ①报文协议及版本: ②状态码及状态描述: ③响应报文头,也是由多个 ...
- (第三章,第四章)http报文内的http信息,返回结果的http状态码
第三章 http报文内的http信息 用于http协议交互的信息被称为http报文,包括请求报文和响应报文. 1.编码提升传输速率,在传输时编码能有效的处理大量的访问请求.但是编码的操作是计算机完成的 ...
随机推荐
- 使用using释放资源
using关键字 using 关键字可以用来导命名空间,与java中的import类似. 我使用using的地方 using(SqlConnection con=new SplConnection(c ...
- Office2013插件开发Outlook篇(1)-- 第一个office2013插件
一.环境: 下载VS2013安装,记得安装office插件开发包哦. 二.新建Outlook插件项目
- Good Bye 2016 //智商再次下线,边界爆炸.....
A B很水就略了.. C.又是一次wannafly一样的判断区间的..... 边界设为2000000 正好GG...... fst的时候立马想到上次也是这么wa过的...... 所以下次遇到这种题 ...
- AppBox升级进行时 - 拥抱Entity Framework的Code First开发模式
AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. 从Subsonic到Entity Framework Subsonic最早发布 ...
- knockoutJS学习笔记02:jsRender模板引擎
上一篇最后提到了模板,并尝试自己编写一个最简单版本:有些朋友可能用过 jqtmpl,这是一个基于jquery的模板引擎,不过它已经不再更新了,而且据说渲染速度比较慢.这里介绍另外一个模板引擎:jsRe ...
- js的this和面向对象编程
很奇怪的是很多书或资料没有把这个事情讲清楚. 关键就是在于没有一个整体的思维技术模式,问题被隔离了所以反而不容易理解. 我们先看this,这是js的关键字,指示函数的上下文对象. 这里问题就来了,比如 ...
- sql where and or优先级 待验证
where 后面如果有and,or的条件,则or自动会把左右的查询条件分开,即先执行and,再执行or.原因就是:and的执行优先级最高! 关系型运算符优先级高到低为:not and or 问题的解决 ...
- Bootstrap使用后笔记
Bootstrap Modal 垂直居中 在 bootstrap.js中修改如下代码: Modal.prototype.adjustDialog = function () { var modal ...
- Linux -- CentOS7修改防护墙端口
CentOS升级到7之后,发现无法使用iptables控制Linuxs的端口,原因是Centos 7使用firewalld代替了原来的iptables.下面记录如何使用firewalld开放Linux ...
- bzoj1189
1189: [HNOI2007]紧急疏散evacuate Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2321 Solved: 724[Submi ...