『运维备忘录』之 HTTP 响应状态码速查

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大家喜欢。

今天我们要讲的是 HTTP 响应状态码


一、简介

超文本传输协议(HTTP)是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端—服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)。

HTTP 状态码用来表示指定的 HTTP 请求是否已成功完成。响应分为五类:

  1. 信息响应 (1xx)
  2. 成功响应 (2xx)
  3. 重定向 (3xx)
  4. 客户端错误 (4xx)
  5. 服务器错误 (5xx)

注意:如果你收到的响应不在上述范围中,则它为非标准响应,可能是应用自定义响应。

 

 

网上找了两张有趣的图片,生动有趣地展示了几个状态码的含义,希望大家看完后续的状态码解释后再回过头来看看这两幅图,能有别样的欢乐。 

二、信息响应 (1xx)

100 Continue

这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它。

101 Switching Protocols

该代码是响应客户端的 Upgrade (en-US) 请求头发送的,指明服务器即将切换的协议。

102 Processing (WebDAV)

此代码表示服务器已收到并正在处理该请求,但当前没有响应可用。

103 Early Hints

此状态代码主要用于与 Link 链接头一起使用,以允许用户代理在服务器准备响应阶段时开始预加载 preloading 资源。

三、成功响应 (2xx)

200 OK

请求成功。成功的含义取决于 HTTP 方法:

  1. GET: 资源已被提取并在消息正文中传输。
  2. HEAD: 实体标头位于消息正文中。
  3. PUT or POST: 描述动作结果的资源在消息体中传输。
  4. TRACE: 消息正文包含服务器收到的请求消息。

201 Created

该请求已成功,并因此创建了一个新的资源。这通常是在 POST 请求,或是某些 PUT 请求之后返回的响应。

202 Accepted

请求已经接收到,但还未响应,没有结果。意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理。

203 Non-Authoritative Information

服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。当前的信息可能是原始版本的子集或者超集。例如,包含资源的元数据可能导致原始服务器知道元信息的超集。使用此状态码不是必须的,而且只有在响应不使用此状态码便会返回200 OK的情况下才是合适的。

204 No Content

对于该请求没有的内容可发送,但头部字段可能有用。用户代理可能会用此时请求头部信息来更新原来资源的头部缓存字段。

205 Reset Content

告诉用户代理重置发送此请求的文档。

206 Partial Content

当从客户端发送Range范围标头以只请求资源的一部分时,将使用此响应代码。

207 Multi-Status (en-US) (WebDAV)

对于多个状态代码都可能合适的情况,传输有关多个资源的信息。

208 Already Reported (en-US) (WebDAV)

在 DAV 里面使用 <dav:propstat> 响应元素以避免重复枚举多个绑定的内部成员到同一个集合。

226 IM Used (en-US) (HTTP Delta encoding)

服务器已经完成了对资源的GET请求,并且响应是对当前实例应用的一个或多个实例操作结果的表示。

四、重定向消息 (3xx)

300 Multiple Choice

请求拥有多个可能的响应。用户代理或者用户应当从中选择一个。(没有标准化的方法来选择其中一个响应,但是建议使用指向可能性的 HTML 链接,以便用户可以选择。)

301 Moved Permanently

请求资源的 URL 已永久更改。在响应中给出了新的 URL。

302 Found

此响应代码表示所请求资源的 URI 已 暂时 更改。未来可能会对 URI 进行进一步的改变。因此,客户机应该在将来的请求中使用这个相同的 URI。

303 See Other

服务器发送此响应,以指示客户端通过一个 GET 请求在另一个 URI 中获取所请求的资源。

304 Not Modified

这是用于缓存的目的。它告诉客户端响应还没有被修改,因此客户端可以继续使用相同的缓存版本的响应。

305 Use Proxy (已弃用)

在 HTTP 规范中定义,以指示请求的响应必须被代理访问。由于对代理的带内配置的安全考虑,它已被弃用。

306 unused

此响应代码不再使用;它只是保留。它曾在 HTTP/1.1 规范的早期版本中使用过。

307 Temporary Redirect

服务器发送此响应,以指示客户端使用在前一个请求中使用的相同方法在另一个 URI 上获取所请求的资源。这与 302 Found HTTP 响应代码具有相同的语义,但用户代理 不能 更改所使用的 HTTP 方法:如果在第一个请求中使用了 POST,则在第二个请求中必须使用 POST

308 Permanent Redirect

这意味着资源现在永久位于由Location: HTTP Response 标头指定的另一个 URI。这与 301 Moved Permanently HTTP 响应代码具有相同的语义,但用户代理不能更改所使用的 HTTP 方法:如果在第一个请求中使用 POST,则必须在第二个请求中使用 POST。

五、客户端错误响应 (4xx)

400 Bad Request

由于被认为是客户端错误(例如,错误的请求语法、无效的请求消息帧或欺骗性的请求路由),服务器无法或不会处理请求。

401 Unauthorized

虽然 HTTP 标准指定了"unauthorized",但从语义上来说,这个响应意味着"unauthenticated"。也就是说,客户端必须对自身进行身份验证才能获得请求的响应。

402 Payment Required 实验性

此响应代码保留供将来使用。创建此代码的最初目的是将其用于数字支付系统,但是此状态代码很少使用,并且不存在标准约定。

403 Forbidden

客户端没有访问内容的权限;也就是说,它是未经授权的,因此服务器拒绝提供请求的资源。与 401 Unauthorized 不同,服务器知道客户端的身份。

404 Not Found

服务器找不到请求的资源。在浏览器中,这意味着无法识别 URL。在 API 中,这也可能意味着端点有效,但资源本身不存在。服务器也可以发送此响应,而不是 403 Forbidden,以向未经授权的客户端隐藏资源的存在。这个响应代码可能是最广为人知的,因为它经常出现在网络上。

405 Method Not Allowed

服务器知道请求方法,但目标资源不支持该方法。例如,API 可能不允许调用DELETE来删除资源。

406 Not Acceptable

当 web 服务器在执行服务端驱动型内容协商机制后,没有发现任何符合用户代理给定标准的内容时,就会发送此响应。

407 Proxy Authentication Required

类似于 401 Unauthorized 但是认证需要由代理完成。

408 Request Timeout

此响应由一些服务器在空闲连接上发送,即使客户端之前没有任何请求。这意味着服务器想关闭这个未使用的连接。由于一些浏览器,如 Chrome、Firefox 27+ 或 IE9,使用 HTTP 预连接机制来加速冲浪,所以这种响应被使用得更多。还要注意的是,有些服务器只是关闭了连接而没有发送此消息。

409 Conflict

当请求与服务器的当前状态冲突时,将发送此响应。

410 Gone

当请求的内容已从服务器中永久删除且没有转发地址时,将发送此响应。客户端需要删除缓存和指向资源的链接。HTTP 规范打算将此状态代码用于“有限时间的促销服务”。API 不应被迫指出已使用此状态代码删除的资源。

411 Length Required

服务端拒绝该请求因为 Content-Length 头部字段未定义但是服务端需要它。

412 Precondition Failed

客户端在其头文件中指出了服务器不满足的先决条件。

413 Payload Too Large

请求实体大于服务器定义的限制。服务器可能会关闭连接,或在标头字段后返回重试 Retry-After。

414 URI Too Long

客户端请求的 URI 比服务器愿意接收的长度长。

415 Unsupported Media Type

服务器不支持请求数据的媒体格式,因此服务器拒绝请求。

416 Range Not Satisfiable

无法满足请求中 Range 标头字段指定的范围。该范围可能超出了目标 URI 数据的大小。

417 Expectation Failed

此响应代码表示服务器无法满足 Expect 请求标头字段所指示的期望。

418 I'm a teapot

客户端错误响应代码表示服务器拒绝冲泡咖啡,因为它是个茶壶。该状态来自超文本咖啡壶控制协议,属于保留协议,并无实际应用。

421 Misdirected Request

请求被定向到无法生成响应的服务器。这可以由未配置为针对请求 URI 中包含的方案和权限组合生成响应的服务器发送。

422 Unprocessable Entity (WebDAV)

请求格式正确,但由于语义错误而无法遵循。

423 Locked (WebDAV)

正在访问的资源已锁定。

424 Failed Dependency (WebDAV)

由于前一个请求失败,请求失败。

425 Too Early 实验性

表示服务器不愿意冒险处理可能被重播的请求。

426 Upgrade Required

服务器拒绝使用当前协议执行请求,但在客户端升级到其他协议后可能愿意这样做。 服务端发送带有Upgrade (en-US) 字段的 426 响应 来表明它所需的协议(们)。

428 Precondition Required

源服务器要求请求是有条件的。此响应旨在防止'丢失更新'问题,即当第三方修改服务器上的状态时,客户端 GET 获取资源的状态,对其进行修改并将其 PUT 放回服务器,从而导致冲突。

429 Too Many Requests

用户在给定的时间内发送了太多请求("限制请求速率")

431 Request Header Fields Too Large

服务器不愿意处理请求,因为其头字段太大。在减小请求头字段的大小后,可以重新提交请求。

451 Unavailable For Legal Reasons

用户代理请求了无法合法提供的资源,例如政府审查的网页。

六、服务端错误响应 (5xx)

500 Internal Server Error

服务器遇到了不知道如何处理的情况。

501 Not Implemented

服务器不支持请求方法,因此无法处理。服务器需要支持的唯二方法(因此不能返回此代码)是 GET and HEAD.

502 Bad Gateway

此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应。

503 Service Unavailable

服务器没有准备好处理请求。常见原因是服务器因维护或重载而停机。请注意,与此响应一起,应发送解释问题的用户友好页面。这个响应应该用于临时条件和如果可能的话,HTTP 标头 Retry-After 字段应该包含恢复服务之前的估计时间。网站管理员还必须注意与此响应一起发送的与缓存相关的标头,因为这些临时条件响应通常不应被缓存。

504 Gateway Timeout

当服务器充当网关且无法及时获得响应时,会给出此错误响应。

505 HTTP Version Not Supported

服务器不支持请求中使用的 HTTP 版本。

506 Variant Also Negotiates

服务器存在内部配置错误:所选的变体资源被配置为参与透明内容协商本身,因此不是协商过程中的适当终点。

507 Insufficient Storage (WebDAV)

无法在资源上执行该方法,因为服务器无法存储成功完成请求所需的表示。

508 Loop Detected (WebDAV)

服务器在处理请求时检测到无限循环。

510 Not Extended

服务器需要对请求进行进一步扩展才能完成请求。

511 Network Authentication Required


附:参考资料

Hypertext Transfer Protocol (HTTP) Status Code Registry 

Value DescriptionReference
100Continue[RFC9110, Section 15.2.1]
101Switching Protocols[RFC9110, Section 15.2.2]
102Processing[RFC2518]
103Early Hints[RFC8297]
104-199Unassigned 
200OK[RFC9110, Section 15.3.1]
201Created[RFC9110, Section 15.3.2]
202Accepted[RFC9110, Section 15.3.3]
203Non-Authoritative Information[RFC9110, Section 15.3.4]
204No Content[RFC9110, Section 15.3.5]
205Reset Content[RFC9110, Section 15.3.6]
206Partial Content[RFC9110, Section 15.3.7]
207Multi-Status[RFC4918]
208Already Reported[RFC5842]
209-225Unassigned 
226IM Used[RFC3229]
227-299Unassigned 
300Multiple Choices[RFC9110, Section 15.4.1]
301Moved Permanently[RFC9110, Section 15.4.2]
302Found[RFC9110, Section 15.4.3]
303See Other[RFC9110, Section 15.4.4]
304Not Modified[RFC9110, Section 15.4.5]
305Use Proxy[RFC9110, Section 15.4.6]
306(Unused)[RFC9110, Section 15.4.7]
307Temporary Redirect[RFC9110, Section 15.4.8]
308Permanent Redirect[RFC9110, Section 15.4.9]
309-399Unassigned 
400Bad Request[RFC9110, Section 15.5.1]
401Unauthorized[RFC9110, Section 15.5.2]
402Payment Required[RFC9110, Section 15.5.3]
403Forbidden[RFC9110, Section 15.5.4]
404Not Found[RFC9110, Section 15.5.5]
405Method Not Allowed[RFC9110, Section 15.5.6]
406Not Acceptable[RFC9110, Section 15.5.7]
407Proxy Authentication Required[RFC9110, Section 15.5.8]
408Request Timeout[RFC9110, Section 15.5.9]
409Conflict[RFC9110, Section 15.5.10]
410Gone[RFC9110, Section 15.5.11]
411Length Required[RFC9110, Section 15.5.12]
412Precondition Failed[RFC9110, Section 15.5.13]
413Content Too Large[RFC9110, Section 15.5.14]
414URI Too Long[RFC9110, Section 15.5.15]
415Unsupported Media Type[RFC9110, Section 15.5.16]
416Range Not Satisfiable[RFC9110, Section 15.5.17]
417Expectation Failed[RFC9110, Section 15.5.18]
418(Unused)[RFC9110, Section 15.5.19]
419-420Unassigned 
421Misdirected Request[RFC9110, Section 15.5.20]
422Unprocessable Content[RFC9110, Section 15.5.21]
423Locked[RFC4918]
424Failed Dependency[RFC4918]
425Too Early[RFC8470]
426Upgrade Required[RFC9110, Section 15.5.22]
427Unassigned 
428Precondition Required[RFC6585]
429Too Many Requests[RFC6585]
430Unassigned 
431Request Header Fields Too Large[RFC6585]
432-450Unassigned 
451Unavailable For Legal Reasons[RFC7725]
452-499Unassigned 
500Internal Server Error[RFC9110, Section 15.6.1]
501Not Implemented[RFC9110, Section 15.6.2]
502Bad Gateway[RFC9110, Section 15.6.3]
503Service Unavailable[RFC9110, Section 15.6.4]
504Gateway Timeout[RFC9110, Section 15.6.5]
505HTTP Version Not Supported[RFC9110, Section 15.6.6]
506Variant Also Negotiates[RFC2295]
507Insufficient Storage[RFC4918]
508Loop Detected[RFC5842]
509Unassigned 
510Not Extended (OBSOLETED)[RFC2774][status-change-http-experiments-to-historic]
511Network Authentication Required[RFC6585]
512-599Unassigned

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/458392.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网页设计】春节页面背景模板

无偿下载地址&#xff1a;https://download.csdn.net/download/weixin_47040861/88811143 1.实现效果 2.代码 1.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content&q…

Logback - 日志框架

引言 在当今的企业级应用开发中&#xff0c;日志管理是一个不可或缺的部分。它不仅帮助我们进行错误跟踪&#xff0c;还能有效监控应用程序的运行状态&#xff0c;为性能优化提供数据支撑。Spring Boot作为一个简化Spring应用开发的框架&#xff0c;自带了强大的日志管理功能。…

算法练习-三数之和(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;数组 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨在…

类型化数组

数字存储前置知识 计算机必须使用固定的位数来存储数字&#xff0c;无论存储的数字是大是小&#xff0c;在内存中占用的空间是固定的n位的无符号整数能表示的个数是2^n个 取值范围是0~2^n-1 举例&#xff1a;000 001 111 表示[0-8]n位的有符号整数能表示的个数是2^n个 取值范围…

【动态规划】【子数组划分】【前缀和】1977. 划分数字的方案数

作者推荐 【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II 本文涉及知识点 动态规划汇总 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode1977 划分数字的方案数 你写下了若干 正整数 &#xff0c;并将它们…

前端vite+vue3——自动化配置路由布局

文章目录 ⭐前言&#x1f496;vue3系列文章 ⭐ 自动化配置路由&#x1f496;引入vite版本自定义目录映射&#x1f496;自动化读取文件下的路由&#x1f496;main入口加载路由&#x1f496;入口app.vue配置&#x1f496;layout基础布局配置&#x1f496;效果 ⭐总结⭐结束 ⭐前言…

解锁售前新效能:AI助手使用的三点建议

1.售前工作概述 自从阴差阳错从技术实施转做售前到现在也有10多年时间&#xff0c;与技术实施仅负责设备安装调试、用户使用培训以及售后维护等被动工作不同。售前更多的是针对用户的主动性工作&#xff0c;包括需求调研与分析、技术沟通与咨询、方案设计与制定、方案演示与讲…

PdfFactory Pro软件下载以及序列号注册码生成器

PdfFactory Pro注册机是一款针对同名虚拟打印机软件所推出的用户名和序列号生成器。PdfFactory Pro是一款非常专业的PDF虚拟打印软件&#xff0c;通过使用这款注册机&#xff0c;就能帮助用户免费获取注册码&#xff0c;一键激活&#xff0c;永久免费使用。 pdffactory7注册码如…

数据库管理-第146期 最强Oracle监控EMCC深入使用-03(20240206)

数据库管理145期 2024-02-06 数据库管理-第146期 最强Oracle监控EMCC深入使用-03&#xff08;20240206&#xff09;1 概览2 性能中心3 性能中心-Exadata总结 数据库管理-第146期 最强Oracle监控EMCC深入使用-03&#xff08;20240206&#xff09; 作者&#xff1a;胖头鱼的鱼缸&…

RabiitMQ延迟队列(死信交换机)

Dead Letter Exchange&#xff08;死信交换机&#xff09; 在MQ中&#xff0c;当消息成为死信&#xff08;Dead message 死掉的信息&#xff09;后&#xff0c;消息中间件可以将其从当前队列发送到另一个队列中&#xff0c;这个队列就是死信队列。而 在RabbitMQ中&#xff0c;由…

IS-IS weight影响路由加表

拓扑图 配置 nexthop weight影响路由加入路由表 weight默认为255&#xff0c;取值1~255&#xff0c;值越小越优先 sysname R1 # isis 1is-level level-1cost-style widenetwork-entity 49.1234.0000.0000.0001.00log-peer-change topology # interface GigabitEthernet0/0/0…

003集——通过VBA将二进制文件转为文本文件

对于二进制的文件&#xff0c;我们可以通过vba代码转为文本文件。这里以dxf为例&#xff0c; 代码如下&#xff1a; Sub ConvertBinaryToText()Dim fs As Object FileSystemObjectSet fs CreateObject("Scripting.FileSystemObject")Dim binaryFilePath As Strin…