HTTP状态码大全(通俗易懂版)

本文详细解释了HTTP状态码1xx、2xx中的几个关键代码,如100Continue(继续请求)、200OK(请求成功)等,通过生活中的比喻阐述其含义,并展示了在实际网络通信中的应用。
摘要由CSDN通过智能技术生成

1、HTTP Status Code 1xx 请求信息

这一组状态码表明这是一个临时性响应。此响应仅由状态行和可选的HTTP头组成,以一个空行结尾。由于HTTP/1.0未定义任何1xx状态码,所以不要向HTTP/1.0客户端发送1xx响应。

1)100 Continue(请继续请求)

比喻:想象你正在一家餐厅里点餐。你走到服务员面前,开始描述你想要点的菜品:你想要一个汉堡,配上薯条和一杯可乐。服务员听了一会儿,然后对你说:“好的,请继续点餐。” 这时候,服务员并没有直接给你上菜或者告诉你没有这道菜,他只是告诉你,他已经在听,并且期待你完成点餐。

解析:在这个比喻中,服务员说的“请继续点餐”就相当于 HTTP 状态码 100 Continue。这表示服务器已经收到了你的请求的一部分(在这个例子中是点餐的开始部分),并且它期待你完成整个请求(完成点餐)。服务器通过发送 100 Continue 状态码来告诉客户端:“我已经准备好接收你的完整请求了,请继续发送。”

应用:在 HTTP 通信中,这种机制特别有用当客户端要发送一个可能很大的请求体时,例如上传一个大文件。客户端可以先发送请求头,如果服务器返回 100 Continue,那么客户端就知道可以继续发送请求体了。

2)101 Switching Protocols(请切换协议)

比喻:想象你正在和你的朋友打电话,你们正在讨论一个有趣的话题。突然,你的朋友提出:“我们切换到视频通话怎么样?这样我们可以更直观地分享我们的想法。”你考虑一下,觉得这个主意不错,于是你回答:“好的,请切换到视频通话吧。”

解析:在这个比喻中,你的朋友提出切换到视频通话就相当于 HTTP 状态码 101 Switching Protocols。它表示一方(在这个例子中是朋友)希望改变当前的通信方式(从语音通话切换到视频通话),以便更好地满足通信的需求。

应用:在 HTTP 通信中,状态码 101 Switching Protocols 通常用于协议升级的场景。例如,当客户端和服务器之间需要使用 WebSocket 进行实时通信时,客户端可能会首先发送一个请求,要求升级到 WebSocket 协议。如果服务器同意这个请求,它就会返回 101 Switching Protocols 状态码,并在响应头中包含有关新协议(WebSocket)的详细信息。

3)102 Processing(请继续执行请求)

比喻:想象一下你走进一家银行,走到一个服务窗口前,准备办理一项业务,比如申请贷款。你递上了相关的申请资料,然后等待银行工作人员的回应。工作人员接过你的资料,开始认真审核,并告诉你:“您的申请已经收到,并且我们正在处理中。请稍候片刻。”

解析:在这个比喻中,银行工作人员告诉你“我们正在处理中”就相当于 HTTP 状态码 102 Processing。它表示你的请求(在这个例子中是贷款申请)已经被接收,并且正在被积极地处理中。虽然你还没有得到最终的结果,但你知道银行已经开始工作了,你只需要耐心等待一段时间。

应用:在 HTTP 通信中,状态码 102 Processing 是一种临时响应,表示服务器已经收到请求,并且正在处理中。这个状态码通常用于告诉客户端,请求已经被接收,并且服务器正在执行一些必要的操作来完成请求。虽然客户端不能立即得到结果,但它可以知道请求没有被忽视,并且服务器正在尽力处理。

2、 HTTP Status Code 2xx 成功状态

1)200 OK (请求成功)

比喻:想象一下,你去了一家你最喜欢的餐厅吃饭。你走进餐厅,点了一份你最喜欢的牛排。过了不久,服务员端着一盘热气腾腾、色香味俱全的牛排走到你面前,微笑着对你说:“这是您点的牛排,请慢用。”你一看,正是你期待的那份牛排,色泽金黄,香气扑鼻,一切都如你所愿。此时,你的心情一定是愉悦的,因为你得到了你想要的东西,没有任何阻碍或问题。

解析:在这个例子中,餐厅的服务员就相当于网络请求中的服务器,而你就是发起请求的客户端。你点牛排的动作,就相当于你向服务器发送了一个请求。服务员端来牛排并告诉你“请慢用”,这就相当于服务器返回了一个“200 OK”的状态码,告诉你请求已经成功处理,你想要的资源(在这里是牛排)已经准备好,可以享用了。

应用:当服务器成功处理了客户端的请求,并返回了客户端所需的资源时,就会使用“200 OK”这个状态码。比如,你在浏览器中输入一个网址,浏览器会向该网址的服务器发送一个请求,请求网页的内容。如果服务器成功处理了这个请求,并返回了网页的内容,那么浏览器的状态栏就会显示“200 OK”,表示请求成功。

2)201 Created 请求已被接受,等待资源响应

比喻:假设你是一位艺术家,去了一家画廊提交了一幅新创作的画作,希望能在画廊展出。画廊的负责人看了你的画作后,非常满意,并告诉你他们已经接受了你的作品,会进行后续的展出安排。此时,你虽然还不能立即在画廊中看到你的画作,但你知道你的作品已经被接受,并且会在不久之后展出。

解析:在这个例子中,你作为艺术家提交画作的行为就像客户端向服务器发送请求,希望创建或提交某种资源(在这里是画作)。画廊负责人接受你的画作并告诉你他们会进行后续安排,就像服务器返回了“201 Created”状态码,告诉你请求已经被接受,并且新的资源(画作)已经被创建或提交,等待后续的响应或处理。

应用:在Web开发中,尤其是RESTful API的设计中,“201 Created”状态码经常用于表示一个资源已经被成功创建。例如,当你通过API向服务器发送一个创建新用户的请求时,如果服务器成功创建了新用户,并返回了用户的详细信息,那么状态码就应该是“201 Created”。这告诉客户端请求已经成功,并且新的资源(在这里是新用户)已经创建。

3)202 Accepted 请求已被接受,但尚未处理

比喻:想象一下你向一家大型公司投递了简历,希望获得一个工作机会。不久之后,你收到了公司的回复,告诉你他们已经收到了你的简历,并正在对其进行评估,稍后会通知你面试的具体安排。此时,你知道你的简历已经被公司接受,但还没有进行具体的处理或反馈。

解析:在这个例子中,你投递简历的行为就像客户端向服务器发送了一个请求(在这里是求职请求)。公司收到简历并告诉你正在评估的行为,就像服务器返回了“202 Accepted”状态码,告诉你请求已经被接受,但尚未进行处理或给出具体的反馈。这种状态下,虽然你没有立即得到结果,但你知道请求已经被正确接收,并且会在后续得到处理。同时,你也知道可能需要等待一段时间,以便公司完成对你的简历的评估。

应用:在Web开发中,“202 Accepted”状态码通常用于那些需要较长时间处理的任务,如批量数据的导入、视频的上传处理等。当客户端发送一个请求后,服务器可能需要花费较长时间来完成这个请求。此时,服务器可以返回“202 Accepted”状态码,告诉客户端请求已经被接受,并正在后台进行处理。同时,服务器还可以提供一个用于查询任务状态的机制,比如一个URL或者一个任务ID,这样客户端就可以通过这个机制来查询任务的进度或结果。

4)203 Non-Authoritative Information 请求已成功处理,结果来自第三方拷贝

比喻:想象一下你正在为一部历史剧寻找准确的历史资料。你首先去了当地的图书馆,但发现那里没有你想要的那本书。不过,图书馆的工作人员告诉你,他们可以帮你从另一家图书馆借到这本书的副本。几天后,你收到了这本书的副本,虽然它并不是原版的,但内容是一样的,足够你用来写历史剧了。

解析:在这个例子中,你寻找历史资料的行为就像是客户端向服务器发送了一个请求(寻找特定的信息或资源)。当地图书馆没有那本书,但能够帮你从另一家图书馆借到副本,这就像是服务器返回了“203 Non-Authoritative Information”状态码。这个状态码告诉你,请求已经成功处理,但返回的信息或资源并不是来自最原始或最权威的来源,而是来自第三方的一个拷贝或副本。

应用:在实际应用中,“203 Non-Authoritative Information”状态码通常用于缓存或镜像的场景。例如,当一个服务器作为另一个服务器的缓存或镜像时,它可能会返回“203 Non-Authoritative Information”状态码,以表明它返回的资源是从另一个地方获取的副本,而不是直接从原始服务器获取的。此外,当多个服务器共同提供相同的内容时,一个服务器可能会从另一个服务器获取内容并返回给客户端,同时使用“203 Non-Authoritative Information”状态码来表明这一点。

5)204 No Content 请求已成功处理,但无返回内容

比喻:假设你去了一家自助洗衣店洗衣服。你把衣服放进洗衣机,投币后启动了洗衣程序。洗衣结束后,洗衣机发出“嘀嘀”的声音提示你衣服已经洗好。你打开洗衣机,发现里面已经没有衣服了(因为衣服已经被你提前拿出来晾晒了),但你知道你的衣服确实已经被成功清洗了。

解析:在这个例子中,你启动洗衣机的行为就像客户端向服务器发送了一个请求(洗衣服)。洗衣机完成洗衣程序并发出提示声音,就像服务器返回了“204 No Content”状态码。这个状态码告诉你请求已经成功处理,但是没有返回任何实质性的内容(在这里是洗衣机里没有衣服了)。尽管没有直接看到洗好的衣服,但你确信你的请求(洗衣服)已经被成功执行。

应用:在Web开发中,“204 No Content”状态码常用于那些只需要执行操作而不需要返回具体内容的请求。例如,当你通过API删除一个资源时,服务器成功删除了该资源,但不需要返回被删除资源的详细信息,此时就可以返回“204 No Content”状态码。此外,在PUT请求中更新资源时,如果客户端发送的请求体包含了资源的完整表示,而服务器只更新了部分字段,那么服务器也可以返回“204 No Content”状态码,表示请求已成功处理,但没有返回更新后的完整资源表。

6)205 Reset Content 请求已成功处理,但需重置内容

比喻:想象你正在使用一台多功能打印机进行复印操作。你放入了需要复印的纸张,选择了复印的份数,然后点击了开始按钮。打印机开始工作,完成复印后,它回到了初始状态,显示屏上的设置都重置了,准备进行下一次操作。

解析:在这个例子中,你点击开始按钮进行复印的行为就像客户端向服务器发送了一个请求(进行某项操作)。打印机完成复印后回到初始状态,就像服务器返回了“205 Reset Content”状态码。这个状态码告诉客户端请求已经成功处理,并且为了准备下一次请求或操作,服务器已经将当前的内容或状态重置为初始状态。这就像打印机在完成复印任务后,自动清除了之前的设置,以便你可以轻松地进行下一次复印或其他操作,而不需要手动调整各种参数。

应用:在Web开发中,“205 Reset Content”状态码通常用于那些需要重置当前视图或内容以便进行后续操作的场景。例如,在一个Web表单中,用户提交数据后,服务器可能会返回“205 Reset Content”状态码,并清空表单字段,以便用户可以输入新的数据。此外,在某些需要频繁更新内容的场景中,服务器也可以使用“205 Reset Content”状态码来通知客户端重置当前的内容或状态,以便准备接收新的内容或进行新的操作。

7)206 Partial Content 请求已成功处理,但仅返回了部分内容

比喻:想象一下你走进一家餐厅,点了一份披萨。由于披萨比较大,服务员并没有一次性将整个披萨送到你的桌子上,而是先送来了披萨的一半,告诉你剩下的部分稍后会送来。这样,你可以先开始享用已经送到的部分,而不用等待整个披萨制作完成。

解析:在这个例子中,你点披萨的行为就像客户端向服务器发送了一个请求(获取数据或资源)。服务员先送来披萨的一半,就像服务器返回了“206 Partial Content”状态码和请求的部分内容。这个状态码告诉客户端,请求已经成功处理,但由于某种原因(如资源过大或客户端只需要部分内容),服务器只返回了请求的部分内容。这样,客户端可以先开始处理已经收到的部分数据,而不用等待整个数据或资源完全传输完成。这对于大文件的下载、视频流的播放等场景非常有用,可以显著提高用户体验。

应用:在Web开发中,“206 Partial Content”状态码常用于支持范围请求(Range requests)的场景。范围请求允许客户端只请求资源的一部分,而不是整个资源。这在处理大文件时特别有用,因为客户端可以分批次下载文件,而不是一次性下载整个文件,从而节省带宽和时间。例如,在视频流播放中,客户端可以根据需要请求视频的不同部分,而服务器会根据请求的范围返回相应的视频片段。这样,用户就可以在观看视频的同时继续下载剩余的内容,实现流畅播放。

8)207 Multi-Status 请求已成功处理,返回了多个状态的XML消息

比喻:想象一下你是一家大型超市的经理,每天都需要检查多个部门的销售情况。你向各个部门的负责人发送了询问销售数据的请求,不久后,你收到了各个部门的回复。有的部门告诉你销售情况良好,有的部门则表示销售有所下滑,还有的部门给出了具体的销售数据和分析。你将这些回复整合起来,形成了一个关于整个超市销售情况的综合报告。

解析:在这个例子中,你向各个部门发送询问销售数据的请求就像客户端向服务器发送了一个复合请求(可能涉及多个子请求或操作)。各个部门的回复就像服务器返回了多个状态或结果。而你将这些回复整合成综合报告的行为,就像是服务器将多个状态或结果包装成一个XML消息返回给客户端。“207 Multi-Status”状态码就是用来表示这种情况的。它告诉客户端,请求已经成功处理,但返回的结果不是一个单一的状态码或内容,而是一个包含了多个状态或结果的XML消息。客户端需要解析这个XML消息来获取所有的状态或结果。

应用:在Web开发中,“207 Multi-Status”状态码常用于WebDAV(Web-based Distributed Authoring and Versioning)协议中,用于处理涉及多个资源的复合请求。WebDAV是一种基于HTTP的协议,用于在Web上创建、修改和共享文档。当客户端需要对多个资源进行一系列操作时(如批量修改文件的属性或内容),它会发送一个复合请求给服务器。服务器处理完这些请求后,会返回一个包含多个状态或结果的XML消息,并使用“207 Multi-Status”状态码来标识这个响应。此外,在其他需要处理多个子请求或返回多个结果的场景中,也可以使用“207 Multi-Status”状态码。通过解析返回的XML消息,客户端可以获取每个子请求的处理结果,从而进行相应的处理或展示。

9)208 Already Reported 响应已发送

比喻:想象一下你正在参加一个社区活动,活动方要求每个参与者都要提交一份自己的活动报告。你完成了报告,并将其交给了活动负责人。负责人收到你的报告后,告诉你他们已经收到了你的报告,并且会进行汇总。不久之后,活动方发布了一个汇总报告,其中包含了所有参与者的报告内容,但并没有单独列出你的报告,因为你的报告已经包含在内了。

解析:在这个例子中,你提交报告的行为就像客户端向服务器发送了一个请求(提交数据或信息)。活动负责人告诉你已经收到你的报告,就像服务器返回了“208 Already Reported”状态码。这个状态码告诉客户端,服务器已经成功接收并处理了请求,而且之前已经报告过相同的信息或状态,因此不需要再次报告或处理。活动方发布的汇总报告则类似于服务器可能返回的其他响应内容,它包含了所有参与者的报告内容,但并没有单独列出你的报告,因为你的报告已经包含在内。

应用:在Web开发中,“208 Already Reported”状态码并不常用,但在某些特定的应用场景中可能会遇到。例如,在Web Push Notifications(Web推送通知)中,当服务器已经发送过某个特定的通知时,可以使用这个状态码来告知客户端该通知已经发送过,不需要再次发送或处理。

此外,在一些需要频繁更新状态或发送报告的场景中,如果客户端重复发送相同的请求,服务器可以使用“208 Already Reported”状态码来避免重复处理相同的请求或发送相同的响应。

10)226 IM Used 已完成响应

比喻:想象一下你正在使用一款在线翻译工具来翻译一篇文章。你选择了源语言和目标语言,然后将文章粘贴到翻译框中,并点击了“翻译”按钮。翻译工具迅速处理了你的请求,并显示了翻译后的文章。在这个过程中,翻译工具可能使用了某种“即时消息”(IM)技术来加快翻译速度或优化翻译结果。虽然你并没有直接看到或感知到这种技术的使用,但你知道你的请求已经被高效地处理并返回了结果。

解析:在这个例子中,你使用在线翻译工具的行为就像客户端向服务器发送了一个请求(翻译文章)。翻译工具迅速处理请求并返回结果的行为,就像服务器返回了“226 IM Used”状态码。这个状态码告诉客户端,服务器已经成功使用了某种即时消息(IM)技术来处理请求,并完成了响应。

虽然客户端可能并不直接知道服务器具体使用了哪种IM技术,或者这种技术如何影响了请求的处理,但客户端可以确信请求已经被高效且正确地处理。

应用:在Web开发中,“226 IM Used”状态码并不常用,但它主要用在HTTP/1.1版本的Delta编码中。Delta编码是一种只发送自上次请求以来发生改变的数据的技术,用于减少网络传输的数据量。当服务器使用Delta编码发送响应时,可以使用“226 IM Used”状态码来告诉客户端,服务器已经使用了即时消息技术(在这里指的是Delta编码)来发送响应。

虽然这个状态码在日常的Web开发中可能并不常见,但在一些需要高效传输和处理数据的场景中,它可能会被使用。通过使用Delta编码和“226 IM Used”状态码,服务器可以只发送自上次请求以来发生改变的数据,从而大大减少网络传输的数据量,提高响应速度和效率。

  • 42
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值