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.编码提升传输速率,在传输时编码能有效的处理大量的访问请求.但是编码的操作是计算机完成的 ...
随机推荐
- Objective C中的ARC的修饰符的使用---- 学习笔记九
#import <Foundation/Foundation.h> @interface Test : NSObject /** * 默认的就是__strong,这里只是做示范,实际使用时 ...
- 如何正确使用 Composer 安装 Laravel 扩展包
我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 composer ...
- 使用 v-cloak 防止页面加载时出现 vuejs 的变量名
使用 vuejs 做了一个简单的功能页面,逻辑是,页面加载后获取当前的经纬度,然后通过 ajax 从后台拉取附近的小区列表.但是 bug 出现了,在显示小区列表之前,会闪现小区名对应的 vuejs 变 ...
- Intellij Idea中的Jetty报出Web application not found src/main/webapp错误的解决方案
今天在Intellij Idea中编译项目的时候,运行起来一直会报出如下的错误: Web application not found src/main/webapp 当时感觉应该是什么文件缺少了.所以 ...
- Android 高清加载巨图方案 拒绝压缩图片
Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49300989: 本文出自:[张 ...
- Word2Vec 使用总结
word2vec 是google 推出的做词嵌入(word embedding)的开源工具. 简单的说,它在给定的语料库上训练一个模型,然后会输出所有出现在语料库上的单词的向量表示,这个向量称为&qu ...
- Android开发之XUtils框架使用和报错处理
一.XUtils lib的的添加: 1.点击+,选择第一个Library dependency 2.输入XUtils 按enter键,搜索: 3.然后就是选择XUtils,选择哪个版本就看个人了,接 ...
- tomcat远程部署应用
Tomcat安装成功后,在ip地址:8080上就可以看见熟悉的首页,在这个首页中,上方有一个manage app按钮,点击就可以进行应用管理了.这样就不需要使用ftp把war包传上去了. 要想远程部署 ...
- 黄聪:phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护
首先到phpexcel官网上下载最新的phpexcel类,下周解压缩一个classes文件夹,里面包含了PHPExcel.php和PHPExcel的文件夹,这个类文件和文件夹是我们需要的,把class ...
- u盘安装系统教程详解
一.准备阶段 提前准备一个至少1G或以上的u盘,方便好用. 1.制作u盘启动工具 (1)工具下载,推荐IT天空的优启通 下载地址:https://www.itiankong.net/thread-37 ...