HTTP协议(二)响应状态码
2014-08-25 10:41
555 查看
HTTP响应状态码
本章介绍HTTP状态码(HTTP Status Code),基本上可以现查现用。 但需要记住几个常用的状态码,如200,302,304,404, 503等。一般仅了解常用的状态码即可, 但若是做AJAX,REST,网络爬虫,机器人等程序。还需了解其他状态码,本文对大部分的状态码进行了详细的实例讲解。为了重现HTTP 状态码,使用Fiddler Composer来创建“特殊的HTTP Request”。
响应类别
1XX 提示信息 - 表示请求已被成功接收,继续处理2XX 成功 - 表示请求已被成功接收,理解,接受
3XX 重定向 - 要完成请求必须进行更进一步的处理
4XX 客户端错误 - 请求有语法错误或请求无法实现
5XX 服务器端错误 - 服务器未能实现合法的请求
常见的响应码
200 OK 服务器成功处理 |
301/302 Moved Permanently(重定向)请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置 |
304 Not Modified(未修改) 客户的缓存资源是最新的,要客户端使用缓存 |
404 Not Found 未找到资源 |
500 Internal Server Error 内部服务器错误 |
502 Bad Gateway(网关故障) 代理使用的服务器遇到了上游的无效响应 |
响应码列表
1XX临时响应
状态码 | 状态消息 | 含义 |
100 | Continue(继续) | 收到了请求的起始部分,客户端应该继续请求 |
101 | Switching Protocols(切换协议) | 已要求服务器切换协议,服务器已确认并准备切换 |
2XX 成功状态码
状态码 | 状态消息 | 含义 |
200 | OK | 服务器成功处理了请求 |
201 | Created(已创建) | 对于那些要服务器创建对象的请求来说,资源已创建完毕。 |
202 | Accepted(已接受) | 请求已接受, 但服务器尚未处理 |
203 | Non-Authoritative Information (非权威信息) | 服务器已将事务成功处理,只是实体Header包含的信息不是来自原始服务器,而是来自资源的副本。 |
204 | No Content(没有内容) | Response中包含一些Header和一个状态行, 但不包括实体的主题内容(没有response body) |
205 | Reset Content(重置内容) | 另一个主要用于浏览器的代码。意思是浏览器应该重置当前页面上所有的HTML表单。 |
206 | Partial Content(部分内容) | 部分请求成功 |
3XX 重定向状态码
状态码 | 状态消息 | 含义 |
300 | Multiple Choices(多项选择) | 客户端请求了实际指向多个资源的URL。这个代码是和一个选项列表一起返回的,然后用户就可以选择他希望的选项了 |
301 | Moved Permanently (永久移除) | 请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置 |
302 | Found(已找到) | 与状态码301类似。但这里的移除是临时的。 客户端会使用Location中给出的URL,重新发送新的HTTP request |
303 | See Other(参见其他) | 类似302 |
304 | Not Modified(未修改) | 客户的缓存资源是最新的, 要客户端使用缓存 |
305 | Use Proxy(使用代理) | 必通过代理访问资源, 代理地址在Response 的Location |
306 | 未使用 | 这个状态码当前没使用 |
307 | Temporary Redirect (临时重定向 | 类似302 |
4XX客户端错误状态码
状态码 | 状态消息 | 含义 |
400 | Bad Request(坏请求) | 告诉客户端,它发送了一个错误的请求。 |
401 | Unauthorized(未授权) | 需要客户端对自己认证 |
402 | Payment Required (要求付款) | 这个状态还没被使用, 保留给将来用 |
403 | Forbidden(禁止) | 请求被服务器拒绝了 |
404 | Not Found(未找到) | 未找到资源 |
405 | Method Not Allowed (不允许使用的方法) | 不支持该Request的方法。 |
406 | Not Acceptable(无法接受) | |
407 | Proxy Authentication Required (要求进行代理认证) | 与状态码401类似, 用于需要进行认证的代理服务器 |
408 | Request Timeout(请求超时) | 如果客户端完成请求时花费的时间太长, 服务器可以回送这个状态码并关闭连接 |
409 | Conflict(冲突) | 发出的请求在资源上造成了一些冲突 |
410 | Gone(消失了) | 服务器曾经有这个资源,现在没有了, 与状态码404类似 |
411 | Length Required(要求长度指示) | 服务器要求在Request中包含Content-Length。 |
412 | Precondition Failed (先决条件失败) | |
413 | Request Entity Too Large (请求实体太大) | 客户端发送的实体主体部分比服务器能够或者希望处理的要大 |
414 | Request URI Too Long (请求URI太长) | 客户端发送的请求所携带的URL超过了服务器能够或者希望处理的长度 |
415 | Unsupported Media Type (不支持的媒体类型) | 服务器无法理解或不支持客户端所发送的实体的内容类型 |
416 | Requested Range Not Satisfiable(所请求的范围未得到满足) | 被访问的资源不覆盖这个字节范围 |
417 | Expectation Failed (无法满足预期) | 在请求头 Expect 中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服务器,能明显证明下一节点的预期是必不可满足的 |
413 | Request Entity Too Large (请求实体太大) | 客户端发送的实体主体部分比服务器能够或者希望处理的要大 |
5XX服务器错误状态码
状态码 | 状态消息 | 含义 |
500 | Internal Server Error (内部服务器错误) | 服务器遇到一个错误,使其无法为请求提供服务 |
501 | Not Implemented(未实现) | 客户端发起的请求超出服务器的能力范围(比如,使用了服务器不支持的请求方法)时,使用此状态码。 |
502 | Bad Gateway(网关故障) | 代理使用的服务器遇到了上游的无效响应 |
503 | Service Unavailable (未提供此服务) | 服务器目前无法为请求提供服务,但过一段时间就可以恢复服务 |
504 | Gateway Timeout(网关超时) | 与状态吗408类似, 但是响应来自网关或代理,此网关或代理在等待另一台服务器的响应时出现了超时 |
505 | HTTP Version Not Supported (不支持的HTTP版本) | 服务器收到的请求使用了它不支持的HTTP协议版本。 有些服务器不支持HTTP早期的HTTP协议版本,也不支持太高的协议版本 |
响应码实例
200 OK
最常见,即成功204No Content
返回的Response中只有些Header和一个状态行, 没有实体主题内容(response body);1. 在不获取资源的情况下了解资源的情况(比如判断其类型)
2. 通过查看Response中的状态码, 看看某个对象是否存在
3. 通过查看Header, 测试资源是否被修改了
【实例】先打开Fiddler, 然后启动浏览器访问ditu.google.cn,查看204状态码的内容
206 PartialContent
代表服务器已经成功处理了部分GET请求 (只有GET 方法的request,web服务器才可能返回206),应用场景:
1. Flash Get, 迅雷或者HTTP下载工具都是使用206状态码来实现断点续传
2. 将一个大文档分解为多个下载段同时下载比如,在线看视频
实例: 一些流媒体技术比如在线视频,可以边看边下载。 就是使用206来实现的。
301 Moved Permanently
请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置【实例】 浏览器客户端访问 http://map.google.cn
1. Web服务器返回Response 301, Location=http://titu.google.cn
2. 浏览器客户端会自动再发送一个Request 去访问http://titu.google.cn
【相关】 URL重定向 http://baike.baidu.com/view/3144121.htm URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一个网址的技术。常用在把一串很长的网站网址,转成较短的网址。因为当要传播某网站的网址时,常常因为网址太长,不好记忆;又有可能因为换了网路的免费网页空间,网址又必须要变更,不知情的使用者还以为网站关闭了。这时就可以用网路上的转址服务了。这个技术使一个网页是可借由不同的统一资源定位符(URL)连结。
302 Found
与状态码301类似。但移除是临时的。 客户端会用Location中给出的URL,重新发送新Request如我们访问google.com会转到google.hk
【实例】先打开Fiddler, 然后启动浏览器访问 http://www.google.com (未翻墙)
304 Not Modified
即使用客户端缓存,详见 缓存章节[f2] ;测试技巧:很多前端问题,可能是使用了缓存,需要强刷 CTRL + F5 刷新浏览器
【实例】先打开Fiddler, 然后启动浏览器访问 http://www.taobao.com 再F5刷新一次
403 Forbidden
403错误是网站访问过程中,常见的错误提示:没有权限访问。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致,比如IIS或者apache设置了访问权限。具体码详见: http://baike.baidu.com/view/3731872.htm
【实例】先打开Fiddler, 然后启动浏览器访问 http://t2.baidu.com/favicon.ico
404 Page Not Found
WWW网站访问比较经常出现的错误。404页面就是当用户输入了错误的链接时,返回的页面。404错误页面设置成功,等于是为网站增加了一把安全锁,在完善网站架构的同时,也留住了潜在客户,更加有利于网站排名优化效果的提升!腾讯就做了失踪儿童的404页面展示,5s后跳转回主页。【实例】先打开Fiddler, 然后启动浏览器访问 http://www.qq.com/sdf..html (即不存在的页面)
405 Method NotAllowed
不支持该Request的方法。【实例】先打开Fiddler, Composer,选择POST http://www.google.com
500 内部服务器错误
开发出错时,就会返回500错误。即常说的黄页。502 Bad Gateway
代理使用的服务器遇到了上游的无效响应。Fiddler本身就是代理服务器。 当我们访问www.facebook.com,天朝V5,502
【实例】先打开Fiddler, 然后启动浏览器访问 http://www.facebook.com (未翻墙)
505 HTTP VersionNot Supported
表示Web服务器不支持此HTTP协议的版本。【实例】先打开Fiddler, Composer,GET http://www.hao123.com/ 选择HTTP2.0
相关文章推荐
- HTTP协议之响应状态码
- HTTP协议响应消息的常用状态码有哪些
- Http协议基础之响应状态码
- HTTP协议中几个状态码的含义:1xx(临时响应)
- Http协议响应状态码
- HTTP协议的响应报文状态码
- http协议 请求报文和响应报文
- HTTP协议响应消息的常用状态码
- http协议请求响应详解
- getResponseCode获取URL响应状态码 HTTP状态返回码
- HTTP响应状态码详解
- 深入浅出地理解HTTP常见响应状态码
- 接收对 http://192.168.1.18:8001/ObtainData/Service 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。
- HTTP协议——建立连接/请求和响应
- HTTP响应状态码
- http响应状态码
- HTTP响应状态码
- 小白学Java Web 12 Http协议2(http响应)
- http协议请求响应详解
- http协议响应知识