Http状态码详解

Stella981
• 阅读 536

从维基百科上翻译的,有点蹩脚包涵包涵。

1xx 消息相关的

代表请求已经收到,继续处理。

这个状态码的分类意味着一个临时的响应,仅有状态行和可选的头部信息组成,并且有一个空行结尾。因为HTTP/1.0并没有定义任何1xx相关的状态码,所以服务器应该发出一个1xx的响应给一个HTTP/1.0的客户端除非在实验条件下。

100 继续

这意味着服务器已经收到请求的头部信息了,客户端应该继续发送请求的主体部分。如果请求的主体部分很大,可能会出现服务器因为不匹配的头部信息的原则拒绝了请求。因此,为了让服务器只通过请求的头部信息就检查请求能否被接受,客户端必须将 Extpect: 100-continue作为初始化请求并且监测100-continue状态码是否被服务器收到在继续发送请求体之前(或者收到417 Expectation Failed状态码并且不再继续)

101 切换协议

这意味着请求者要求服务器切换协议并且服务器也确认将会那么做。

102 处理中

作为一个WebDAV的请求可能包含多个子请求包括文件操作等,这将可能花费很长时间去完成操作。这个状态码意味着服务器已经收到了请求,并且正在处理中,所以当前暂无响应。这样将避免客户端因为超时而认为当前请求丢失。

2XX 成功

这一类状态码意味着请求的行为已经被客户端收到、理解接受而且被成功地处理。

200 成功

成功HTTP请求的标准响应状态码。不过实际的响应取决于请求者所使用的方法。如果在一个GET的请求中,响应将会包含对应资源的实体。而在一个POST请求中,响应将会包含一个实体的描述或者是请求行为的结果。

201 已创建

请求已经被满足,并且一个新的资源将会被创建。

202 接受

请求已经被接受并被处理,但是处理还没有完成。请求可能最终不会采取行动,因为在执行过程中可能会被打断。

203 非权威的信息

服务器成功处理请求,但是返回信息可能来自其它源。

204 无内容

服务器成功处理请求,但是没有返回任何内容。通常被用来被作为成功删除的请求的响应。

205 重置内容

服务器成功处理请求,但是没有返回任何内容。和204不同的是,响应需要请求者重置文档视图。

206 部分内容

服务器只返回了一部分资源因为客户端发送了一系列的请求头。这些请求头被像wget的工具去恢复已经被中断的下载,或者将下载分成多个同步的流。

207 多状态

紧跟消息体后面的是xml消息并且包含了多个单独的响应状态码,响应的数量取决于子请求的个数。

208 已经报告

一个DAV的绑定成员被前一个请求枚举,并且没有被再一次包括。

226 IM Used

服务器已经满足了请求所要的资源,并且响应是一个或者多个实例操作应用于当前实例的结果。

3XX跳转

这一类状态码意味着客户端必须执行额外的动作去完成请求。大部分这些状态码被用于url重定向。只有当第二请求方法是GET或者是HEAD的情况下,用户代理可能会执行额外的动作在没有用户交互的情况下。一个用户代理不能自动地重定向请求超过5次,因为这样的重定向经常意味着一个死循环。

300 多重选择

意味着对于这个资源有多个选项需要客户端注意。例如,可以用来展示不同格式的视频,使用不同的扩展名列出文件,或者消除文字的歧义。

301 永久移动

当前以及未来的所有请求应该被定位到指定的url上去。

302 发现

这是工业实践和标准相矛盾的例子。HTTP/1.0规范需要客户端执行一个临时的跳转(原始的描述短语是”临时移动”),但是流行的浏览器使用303查看其它的功能去实现302.因此,HTTP/1.1添加了状态码303和307去分辨这两个操作。然而,一些web程序和框架使用302状态码就好像它是303一样。

303 查看其它

当前请求的响应能够在其它的URI地址上使用GET方法发现。当接收到一个POST响应的请求,则应该假设服务器已经收到数据而且跳转应该发出一个单独的GET消息。

304 未修改

意味着资源没有被修改因为请求头指定的版本跟本地保存的版本并未修改或没有匹配。这说明没有必要重新传输资源,因为客户端仍然有一个以前下载的副本。

305 使用代理(自从HTTP/1.1)

请求的资源只能通过代理才能访问,并且访问的地址由响应提供。很多HTTP客户端(像火狐和IE)因为安全问题,不能正确地处理该响应。

306 切换代理

不再使用。原意是随后的请求应该使用指定的代理。

307 临时跳转(自从HTTP/1.1)

在这种情况下,当前请求应该被另一个URI地址重新发送,然而未来的请求仍然应该使用原始的URI地址。和302不同的是历史实现,请求方法不允许改变当重新发送原始请求。例如,一个POST请求应该被另一个POST请求重新发送。

308 永久转移

这个请求和以后的请求都应该被另一个URI地址重新发送。307、308和302、301有相同的表现,但是不允许HTTP方法改变。例如,请求表单到一个永久转移的资源将会继续顺利地执行。

4XX 客户端错误

4XX类别的状态码是为了预防客户端出现错误的情况。除了响应请求头的情况,服务器应该包括错误情形解释的实体无论是临时的还是永久的条件。这些状态码可以和任何请求方法匹配。用户代理应该展示可以被包括的实体给用户。

400 错误请求

服务器因为一些事情感知到客户端的错误而不继续处理请求(例如不正确的请求语法,无效的请求消息框架,以及虚假的请求路由)。

401 未授权

和403禁止相似,但是明确用于需要授权的、失败的或者是不支持的。响应必须包括适用于请求资源的WWW-认证头字段。查看基本访问认证和数字访问认证。

402 需要付款

为以后保留使用。原意是该状态码可被用于一些数字货币或者是微支付,但是目前还没有普及,所以这些代码不经常被使用。YouYube使用这个状态如果某个IP地址发出了过多的请求,并要求用户输入验证码。

403 禁止访问

这个请求是一个有效的请求,但是服务器拒绝响应它。和401未授权的响应不同,是否授权并没有区别。

404 找不到

请求资源无法被找到但是可能以后会再次有效。客户端以后发出的请求也是被允许的。

405 方法不允许

请求由不支持该方法的资源发出。例如,使用GET方法在一个需要数据通过POST展现的表单或者是使用PUT在一个只读的资源中。

406 不可接受的

被请求的资源只能用于生成内容而不会接收发送请求中的头。

407 需要代理认证

客户端必须首先使用代理认证自己。

408 请求超时

服务器超时等待请求。根据HTTP规范:”客户端在服务器等待期间没有发出任何请求”。客户端可能会在未来的某个时候重复请求而不做任何修改。

409 冲突

意味着请求不能被处理因为存在冲突,例如多个更新的情况下存在修改冲突。

410 遗失的

当前状态意味着被请求的资源不再有效并且以后也不会再次生效。一般用于一个资源被有意地删除或者资源需要被清除。一旦接收410状态码,客户端将不应该再次请求该资源。例如搜素引擎应该从它们的下表中移除资源。大部分用例并不需要客户端和搜索引擎清空资源,而是使用404找不到来代替。

411 长度要求

请求没有指定内容的长度,但是请求的资源需要指定。

412 前置条件失败

服务器不满足请求者所请求的预置条件。

413 响应实体太大

请求超过服务器所能处理和允许的最大值。

414 请求-URI太长

被提供的URI对服务器的处理来说太长。经常出现在太多被编码的数据被作为查询字符串的GET请求的结果,因此需要被转换为POST请求。

415 不被支持的媒体类型

请求实体的媒体类型不被服务器或者资源支持。例如,客户端上传一个image/svg+xml的图片,但是服务器需要图片使用不同的格式。

416 请求范围不能满足

客户端要求文件的部分(字节服务),但是服务器不能提供那部分的内容。例如,如果客户端要求的部分超过文件的底端。

417 期望失败

服务器期望请求头字段的要求。

418 我是一个茶壶

这个代码是在1998年作为传统的IETF April Fools' jokes被定义的在RFC2324,超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现。RFC指定了这个代码应该是由茶罐返回给速溶咖啡。

419 认证超时

并不是HTTP标注的一部分,419认证超时表示以前的有效证明已经失效了。同时也被用于401未认证的替代选择为了从其它被拒绝访问的已认证客户端中指定服务器的资源。

420 方法失效

不是HTTP的标准,但是被Spring定义在HTTP状态类中当方法失时使用。这个状态码已经不推荐在Spring中使用。

420 提高你的耐心

也不是HTTP标准的一部分,但是被版本1的Twitter搜索和趋势APi返回当客户端的速率被限制的时候。其它的服务提供商可能会使用429太多的请求响应码来代替。

421 误导请求

请求被直接定向到不能产生响应的服务器上(例如因为一个连接的复用)。

422 不可处理的实体(WebDAV)

请求符合要求但是不能接受错误由于语法错误。

423 锁定的

资源访问被锁定。

424 失败的依赖

请求由于上一个请求的失败而失败。

426 需要升级

客户端应该切换不同的协议例如TLS/1.0在指定的升级的头字段里。

428 需要前置条件

原始服务器需要有条件的请求。当客户端GET一个资源的状态的时候,同时又PUT回给服务器,与此同时第三方修改状态到服务器上的时候,为了避免丢失更新的问题发生将会导致冲突。

429 过多请求

用户已经发送了太多的请求在指定的时间里。用于限制速率。

431 请求头部字段太大

服务器由于一个单独的请求头部字段或者是全部的字段太大而不愿意处理请求。

440 登陆超时(微软)

一个微软的扩展,意味着你的会话已经超时。

444 无响应

被使用在Nginx的日志中表明服务器没有返回信息给客户端并且关闭了连接(在威慑恶意软件的时候比较有用)。

449 重试(微软)

一个微软的扩展。请求应该在执行适当的动作之后被重试。

450 被Windows家长控制阻塞(微软)

一个微软的扩展。这个错误是当Windows家长控制打开并且阻塞指定网页的访问的时候被指定。

451 由于法律原因而无效(因特网草稿)

被定义在因特网草稿“一个新的HTTP状态码用于法律限制的资源”。被用于当资源的访问由于法律原因被禁止的时候。例如检查制度或者是政府强制要求禁止访问。一个例子是1953年dystopian的小说_Fahrenheit 451就是一个非法的资源。_

451 重定向(微软)

被用在Exchange ActiveSync中如果一个更有效的服务器能够被使用或者是服务器不能访问用户的邮箱。

客户端会假定重新执行HTTP自动发现协议去寻找更适合的服务器。

494 请求头太大(Nginx)

Nginx内置代码和431类似,但是是被更早地引入在版本0.9.4(在2011年1月21日)。

495 证书错误(Nginx)

Nginx内置的代码,当使用SSL客户端证书的时候错误会出现为了在日志错误中区分它和4XX和一个错误页面的重定向。。

496 没有证书(Nginx)

Nginx内置的代码,当客户端不能提供证书在日志中分辨4XX和一个错误页面的重定向。

497 HTTP到HTTPS(Nginx)

Nginx内置的代码,被用于原始的HTTP的请求发送给HTTPS端口去分辨4XX在日志中和一个错误页面的重定向。

498 令牌超时或失效(Esri)

由ArcGIS for Server返回。这个代码意味着令牌的超时或者是失效。

499 客户端关闭请求(Nginx)

被用在Nginx日志去表明一个连接已经被客户端关闭当服务器仍然正在处理它的请求,是的服务器无法返货状态码。

499 需要令牌(Esri)

由ArcGIS for Server返回。意味着需要一个令牌(如果没有令牌被提交)。

5XX 服务器错误

服务器似乎不能满足有效的请求

以数字5开头的响应状态码意味着服务器已经意识到遇到了一个错误或者是无法发送请求。除了响应HEAD请求的时候,服务器应该包含一个保存错误情形解释的实体,并且标识这个情况是暂时的还是永久的。同样地,用户代理也应该展示任何被包含的实体给用户。这些响应码适用于任何请求方法。

500 服务器内部错误

一个普通的错误信息,当一个意外的情况出现并且没有其它明确的消息是合适的。

501 没有实现

服务既不能识别请求方法,也缺少满足请求的能力。一般会在将来可用(例如一个新的web-service接口特性)

502 错误的网关

服务器作为一个网关或者代理,从上游的服务器中接收到无效的响应。

503 服务不可用

服务当前不可用(因为过载或者下线维护)。一般而言,只是一种暂时的状态。

504 网关超时

服务器作为一个网关或者代理,但是没有从上游服务器收到即时的响应。

505 HTTP版本不支持

服务器不支持在请求中使用的HTTP协议。

506 变量也是导航

对于请求是透明的内容导航导致循环参照。

507 存储不足

服务器不能存储需要的内容去完成请求。

508 发现环路

服务器发现了一个无限的循环档处理请求的时候。

509 频带宽度超出限制(Apache的扩展)

这个状态码没有在任何RFCS中指定。使用方法是未知的。

511 需要网络授权

客户端需要授权去火的网络的访问权限。一般用于代理交互中被用来进行网络的访问控制。

520 未知错误

这个状态码也没有被指定在任何RFC中,并且只会被一些服务器返回,例如微软的Azure和CloudFlare服务器:”520错误本质上是一个捕获全部的响应当原始服务器返回一些未知的或者一些不能被忍受或者被解释的(协议违反或者空响应)”。

598 网络读取超时异常(未知)

这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络读取超时在一个客户端之前的代理的后面。

599 网络连接超时异常(未知)

这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络连接超时在一个客户端之前的代理的后面。

手工翻译了一下HTTP状态码的文章,原文地址如下:

Wikipedia List of HTTP status codes

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
AndroidStudio封装SDK的那些事
<divclass"markdown\_views"<!flowchart箭头图标勿删<svgxmlns"http://www.w3.org/2000/svg"style"display:none;"<pathstrokelinecap"round"d"M5,00,2.55,5z"id"raphael
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
HTTP状态码
消息(1字头)这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。100Continue客户端应当继续发送请求。这个临时响应是
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这