HTTP状态码详解

公子初心
2025-01-20 / 0 评论 / 12 阅读 / 正在检测是否收录...

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。
下面是常见的HTTP状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误
    HTTP 状态代码表示什么意思?
    HTTP 状态码(英语:HTTP Status Code)是用以表示 HTTP 响应状态的 3 位数字代码。比如:
  • 1xx:消息
  • 2xx:成功
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务器错误
    熟记这些状态码可以让我们在快速定位 Web 开发中遇到的问题、编写符合规范的接口服务,那么下面就让我们看看这些死板的 3 位数字都是什么意思。
    HTTP状态码分类
    HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
    1开头(信息响应)
    1xx(临时响应):信息性状态码,表示服务器已接收了客户端请求,客户端可继续发送请求。
    1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。代码 说明
  • (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
  • (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。
    2开头(成功响应)
    2xx (成功)表示成功处理了请求的状态代码。代码 说明
  • (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
  • (已创建) 请求成功并且服务器创建了新的资源。
  • (已接受) 服务器已接受请求,但尚未处理。
  • (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
  • (无内容) 服务器成功处理了请求,但没有返回任何内容。
  • (重置内容) 服务器成功处理了请求,但没有返回任何内容。
  • (部分内容) 服务器成功处理了部分 GET 请求。
    3开头(重定向)
    3xx (重定向) 表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。
  • (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
  • (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
  • (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
  • (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
  • (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
  • (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
  • (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    4开头(客户端响应)
    4xx(请求错误) 这些状态代码表示请求可能出错,妨碍了服务器的处理。代码 说明
  • (错误请求) 服务器不理解请求的语法。
  • (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
  • (禁止) 服务器拒绝请求。
  • (未找到) 服务器找不到请求的网页。
  • (方法禁用) 禁用请求中指定的方法。
  • (不接受) 无法使用请求的内容特性响应请求的网页。
  • (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
  • (请求超时) 服务器等候请求时发生超时。
  • (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
  • (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
  • (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
  • (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
  • (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
  • (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
  • (不支持的媒体类型) 请求的格式不受请求页面的支持。
  • (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
  • (未满足期望值) 服务器未满足"期望"请求标头字段的要求。
    5开头(服务端响应)
    5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。代码 说明
  • (服务器内部错误) 服务器遇到错误,无法完成请求。
  • (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
  • (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
  • (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
  • (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
  • (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

趣味图解HTTP状态码的含义
来源:云技术实践  时间:2018/11/28 10:09:18  对本文有异议
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。我们可以通过查看HTTP状态码来判断服务器状态,常见的有404 、502等;但是其他不是很常见的状态码都代表什么状态呢?下面有两张有趣的图片,让你瞬间都能理解了。
HTTP状态码(图一)
m64snggx.png

  • 301—永久移动。被请求的资源已被永久移动位置;
  • 302—请求的资源现在临时从不同的 URI 响应请求;
  • 305—使用代理。被请求的资源必须通过指定的代理才能被访问;
  • 307—临时跳转。被请求的资源在临时从不同的URL响应请求;
  • 400—错误请求;
  • 402—需要付款。该状态码是为了将来可能的需求而预留的,用于一些数字货币或者是微支付;
  • 403—禁止访问。服务器已经理解请求,但是拒绝执行它;
  • 404—找不到对象。请求失败,资源不存在;
  • 406—不可接受的。请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体;
    HTTP状态码(图二)
    m64snvd3.png
  • 408—请求超时;
  • 409—冲突。由于和被请求的资源的当前状态之间存在冲突,请求无法完成;
  • 410—遗失的。被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址;
  • 413—响应实体太大。服务器拒绝处理当前请求,请求超过服务器所能处理和允许的最大值。
  • 417—期望失败。在请求头 Expect 中指定的预期内容无法被服务器满足;
  • 418—我是一个茶壶。超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现;
  • 420—方法失效。
  • 422—不可处理的实体。请求格式正确,但是由于含有语义错误,无法响应;
  • 500—服务器内部错误。服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理;
    最无耻的 HTTP 常用状态码图解
    之前有朋友发过一篇 HTTP 状态码大全,我补充一篇,也是网上偶然看见的图,觉得虽然很没有节操但是却很形象生动,分享出来共 High

m64son2l.png
301 永久移动位置,被请求的资源已经被永久性的转移了位置 302 您请求的资源现在需要临时通过其他的 URI 来获取 305 使用代理,被请求的资源必须通过指定的代理才能访问到 307 临时跳转。被请求的资源在临时从不同的URL响应请求 400 请求错误 402 该状态码是为了将来可能的需求而预留的,比如可能用于一些数字货币或者是微支付 403 禁止访问。服务器已经理解请求,但是拒绝执行它 404 找不到对象。请求失败,资源不存在,程序员找对象简直是宇宙谜题 406 不可接受的。请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体

m64soxzm.png

408 请求超时,请活活憋死吧 409 请求冲突。由于和被请求的资源的当前状态之间存在冲突,请求无法完成 410 遗失的。被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址 413 响应实体太大。服务器拒绝处理当前请求,请求超过服务器所能处理和允许的最大值 417 期望失败。在请求头 Expect 中指定的预期内容无法被服务器满足 418 我是一个茶壶。超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现 420 方法失效 422 不可处理的实体。请求格式正确,但是由于含有语义错误,无法响应 500 服务器内部错误。服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理
一文牢记HTTP状态码(图解HTTP状态码)
HTTP状态码是干什么的?
HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器的处理是否正常、通知出现的错误等工作。
状态码告知从服务器端返回的请求结果
状态码的职责是当客户端向服务端发送请求时,描述返回的请求结果。
借助状态吗,用户可以知道服务器端是正常处理了请求,还是出现了错误。

m64spcz2.png
2XX 成功状态码详述
2XX的响应结果表明请求被正常处理了
200 OK
m64spr10.png
表示从客户端发来的请求在服务端被正常处理了。
在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。比如,使用GET方法时,对应请求资源的实体会做为响应返回;而使用HEAD方法时,对应请求资源的实体首部不随报文主体作为响应返回(即在响应中只返回首部,不会返回时主体部分)。
204 NoContent
m64sq49u.png
该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。比如,当从浏览器发出请求处理后,返回204响应,那么浏览器显示的页面不发生更新。
一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。
206 Partial Content

该状态码表示服务端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含Content-Range制定范围的实体内容。
3XX 重定向
3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。
301 Moved Permanently

m64sqgvt.png
永久重定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。也就是说,如果已经把资源对应的URI保存为书签了,这是应该按Location首部字段提示的URI重新保存。
302 Found

临时重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。
和301状态码相似,但302状态码代表的资源不是被永久移动,只是临时性质的。换句话说,已移动的资源对应的URI将来还有可能会发生改变。
303 See Other

m64sqt6e.png
该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。
303状态码和302状态码有着相同的功能,但303状态码明确表示客户端应采用GET方法获取资源,这点与302状态码有区别。
301,302,303之间的联系
当301、302、303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。
301,302标准是禁止将POST方法改变成FET方法,但实际使用时大家都会这么做。
304 Not Modified

m64sr3c9.png
该状态码表示客户端发送附带条件的请求时,服务器允许请求访问资源,但未满足条件的情况。
304状态码返回时,不包含任何响应的主体部分。304虽然被划分在3XX类别中,但是和重定向没有关系。
307 Temporary Redirect
临时重定向。该状态码与302有着相同的含义。尽管302标准禁止POST变换成GET,但实际使用时大家并不遵守。
307会遵照浏览器标准,不会从POST变成GET。但是,对于处理响应时的行为,每种浏览器有可能出现不同的情况。
4XX 客户端错误
4XX的响应结果表明客户端时发生错误的原因所在。
400 Bad Request

该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像200 OK一样对待该状态码。
401 Unauthorized

该状态码表示发送请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外若之前已进行过1次请求,则表示用户认证失败。
返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用于质询(challenge)用户信息。当浏览器初次接收到401响应,会弹出认证用的对话窗口。
403 Forbidden

该状态码表明对请求资源的访问被服务器拒绝了。服务器没有必要给出拒绝的详细理由,但如果想做说明的话,可以在实体的主体部分对原因进行描述,这样就能让用户看到。
未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源IP地址试图访问)等列举的情况都有可能是发生403的原因。
404 Not Found

m64srk31.png
该状态码表示服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
5XX 服务器错误
5XX的响应结果表明服务器本身发生错误。
500 Internal Server Error
m64srucn.png
该状态码表明服务器端在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障。
503 Service Unavailable
m64ss4uy.png

0

评论 (0)

取消