HTTP协议状态码详解(HTTP Status Code)

动用ASP.NET/PHP/JSP
或者javascript都会用到http的分歧景色,一些常见的情景码为:
200 – 服务器成功重回网页 404 – 请求的网页不设有 503 – 服务不可用
1xx(临时响应)
意味着暂时响应并索要请求者继续执行操作的处境代码。

代码   说明
100   (继续) 请求者应当继续提议呼吁。
服务器再次回到此代码表示已吸纳请求的率先局地,正在守候其余部分。 
101   (切换协议) 请求者已要求服务器切换协议,服务器已确认并预备切换。

2xx (成功)
意味着成功拍卖了请求的景况代码。

代码   说明
200   (成功)  服务器已成功拍卖了请求。
平日,那代表服务器提供了请求的网页。
201   (已制造)  请求成功还要服务器创制了新的资源。
202   (已接受)  服务器已接受请求,但一直不处理。
203   (非授权音信) 
服务器已成功拍卖了请求,但再次来到的音讯可能源于另一来源。
204   (无内容)  服务器成功拍卖了请求,但尚无重返任何内容。
205   (重置内容) 服务器成功拍卖了请求,但没有重临任何内容。
206   (部分情节)  服务器成功拍卖了一部分 GET 请求。

3xx (重定向)
意味着要做到请求,须求越来越操作。 平时,那些景况代码用来重定向。

代码   说明
300   (多种摘取)  针对请求,服务器可举行多种操作。 服务器可按照请求者
(user agent) 接纳一项操作,或提供操作列表供请求者拔取。
301   (永久移动)  请求的网页已永久移动到新岗位。 服务器再次回到此响应(对
GET 或 HEAD 请求的响应)时,会活动将请求者转到新岗位。
302   (临时挪动) 
服务器如今从不一致岗位的网页响应请求,但请求者应持续采纳原有地点来进展事后的乞请。
303   (查看其余职位) 请求者应当对分歧的职位接纳单独的 GET
请求来搜寻响应时,服务器重回此代码。
304   (未修改) 自从上次呼吁后,请求的网页未修改过。
服务器重返此响应时,不会回到网页内容。
305   (使用代理) 请求者只好利用代理访问请求的网页。
倘使服务器再次来到此响应,还意味着请求者应运用代理。
307   (临时重定向) 
服务器近期从差别职位的网页响应请求,但请求者应继续使用原有地点来展开事后的呼吁。

4xx(请求错误)
那一个意况代码表示请求可能出错,妨碍了服务器的处理。

代码   说明
400   (错误请求) 服务器不知晓请求的语法。
401   (未授权) 请求需要身份验证。
对于急需报到的网页,服务器可能回到此响应。
403   (禁止) 服务器拒绝请求。
404   (未找到) 服务器找不到请求的网页。
405   (方法禁用) 禁用请求中指定的主意。
406   (不接受) 无法利用请求的始末特点响应请求的网页。
407   (必要代理授权) 此状态代码与
401(未授权)类似,但指定请求者应当授权使用代理。
408   (请求超时)  服务器等候请求时暴发超时。
409   (争持)  服务器在形成请求时爆发争辩。
服务器必须在响应中隐含关于争执的音信。
410   (已去除)  如若请求的资源已永远删除,服务器就会回去此响应。
411   (须要有效长度) 服务器不接受不含有效内容长度标头字段的伸手。
412   (未满意前提条件)
服务器未满意请求者在伏乞中装置的内部一个前提条件。
413   (请求实体过大)
服务器不可以处理请求,因为请求实体过大,超出服务器的拍卖能力。
414   (请求的 URI 过长) 请求的
URI(日常为网址)过长,服务器不能处理。
415   (不协助的传媒类型) 请求的格式不受请求页面的援助。
416   (请求范围不符合要求)
如果页面无法提供请求的限制,则服务器会回来此情况代码。
417   (未满意期望值) 服务器未满足”期望”请求标头字段的渴求。

5xx(服务器错误)
那么些意况代码表示服务器在品味处理请求时爆发内部错误。
这么些不当可能是服务器本身的失实,而不是请求出错。

代码   说明
500   (服务器内部错误)  服务器遭受错误,无法完成请求。
501   (尚未施行) 服务器不抱有完结请求的功力。
例如,服务器无法识别请求方法时可能会回来此代码。
502   (错误网关) 服务器作为网关或代办,从上游服务器收到无效响应。
503   (服务不可用) 服务器近日不能利用(由于超载或停机维护)。
平时,那只是临时状态。
504   (网关超时) 
服务器作为网关或代办,然则尚未立刻从上游服务器收到请求。
505   (HTTP 版本不受协理) 服务器不扶助请求中所用的 HTTP 协议版本。

 

RFC 6585
如今正好发布,该文档描述了 4 个新的 HTTP 状态码。

HTTP 协议还在转移?是的,HTTP 协议平昔在衍变,新的状态码对于开发 REST
服务仍旧说是基于 HTTP
的劳动卓殊有用,下边大家为您详细介绍这七个新的状态码以及是还是不是相应接纳。

428 Precondition Required (必要先决条件)

先决条件是客户端发送 HTTP
请求时,假诺想要请求能得逞必须满意一些预设的口径。

一个好的例证就是 If-None-Match 头,常常在 GET 请求中采纳,如若指定了
If-None-Match ,那么客户端只在响应中的 ETag 改变后才会另行吸收回应。

先决条件的其余一个事例就是 If-Match 头,那么些貌似用在 PUT
请求上用以提醒只更新没被改动的资源,那在多少个客户端应用 HTTP
服务时用来防护相互间不会覆盖相同内容。

当服务器端使用 428 Precondition
Required

状态码时,表示客户端必须发送上述的伸手头才能实施请求,这一个主意为服务器提供一种有效的格局来阻拦
‘lost update’ 问题。

429 Too Many Requests (太多请求)

当你需求限制客户端请求某个服务数量时,该状态码就很有用,也就是呼吁速度限制。

在此往日,有部分好像的状态码,例如 ‘509 Bandwidth Limit Exceeded’.
Twitter 使用 420
(那不是HTTP定义的状态码)

假使你希望限制客户端对服务的乞请数,可利用 429 状态码,同时涵盖一个
Retry-After 响应头用于告诉客户端多久后可以另行伸手服务。

431 Request Header 菲尔德s Too Large (请求头字段太大)

一些景况下,客户端发送 HTTP 请求头会变得很大,那么服务器可发送 431
Request Header Fields Too
Large
来指明该问题。

本身不太知道为何没有 430 状态码,而是径直从 429 跳到
431,我尝试寻找但从没结果。唯一的怀疑是 430 Forbidden 跟 403 Forbidden
太像了,为了防止混淆才这么做的,天知道!

511 Network Authentication Required (需求网络认证)

对自己的话那几个状态码很有意思,即便您在支付一个 HTTP
服务器,你不自然要求处理该状态码,但如若您在编写 HTTP
客户端,那这些状态码就老大重大。

假若你频仍使用台式机和智能手机,你恐怕会专注到大气的公用 WIFI
服务必要你必须接受部分合计或者必须登录后才能运用。

那是经过拦截HTTP流量,当用户准备访问网络再次来到一个重定向和登录,那很讨厌,不过事实上情状就是那般的。

利用这几个“拦截”客户端,会有一对憎恶的副作用。在 RFC
中有提到那五个的事例:

  • 如若你在报到WIFI前作客某个网站,网络设施将会阻碍第二个请求,这一个设备往往也有友好的网站图标
    ‘favicon.ico’。登录后你会意识,有一段时间内你拜访的网站图标一直是WIFI登录网站的图标。
  • 万一客户端应用HTTP请求来探寻文档(可能是JSON),网络将会响应一个登录页,这样你的客户端就会分析错误并招致客户端运行十分,在实际中那种题材非凡普遍。

据此 511 状态码的提出就是为着化解那个题目。

假诺您正在编纂 HTTP 的客户端,你最好或者检查 511
状态码以确认是还是不是必要表明后才能访问。

英文原文

相关文章