`
no7beckham
  • 浏览: 97630 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

1xx 和 2xx 系列状态码

阅读更多
1xx 系列

1xx 系列一般是用在服务器与代理之间,表示一些信息,这在我们写服务端程序时并不常用,并且 1xx 系列状态码是在 HTTP 1.1 中才加入的,按照 w3c 的说法,除非在实验性的环境下,不要发送 1xx 系列状态码到使用 HTTP 1.0 协议的客户端。

如果需要了解两个 1xx 系列的状态 100 Continue 和 101 Switching Protocols 的作用,可以在 RFC2616 第10节external link中找到相关资料。


2xx 系列

2xx 系列表示成功的响应,最为人所知的就是 200 OK 了,它表示一下正确响应了客户端所发送过来的请求,那么在客户端,也就需要以“正确”的态度来对待服务端过来的响应内容。

4.1 200 OK

呃,200 OK 是最最常见的状态码了,每次我们在浏览器输入一个网址按下回车后,就会收到一堆 200 OK,就是一堆 200 OK,呈现给我们了一个丰富多彩的页面。

因此,通常情况下,在编写服务端程序时,也应该返回一个 200 OK 的状态码。但是也因为 200 OK 是如此的普通,如此的常用,可能在一些特殊的情况下,开发人员没有注意到 200 OK 并不是一个可取的状态码,而这个特殊的情况,最明显的一个就是采用了 自定义错误页 或 Url Rewrite 的时候。

在使用了自定义错误页或者 Url Rewrite 时,如果碰到了一个并不存在的资源,服务器会将请求重定向到指定的页面,而这时服务器会认为请求得到了正确的响应,响应状态码会被设置为 200 OK,如果在程序中不另加设置,客户端就会请求一个不存在的资源时得到了 200 OK 这个本该只在得到正确响应时才能得到的状态码。这对于一般用户来说,可能没有多大的影响,但对于搜索引擎却是不友好的,搜索引擎会不断的索引这些并不存在的资源。

所以,如果使用了自定义错误页或 Url Rewrite,那么需要在程序中根据实际情况来设置状态码是 200 OK 还是 404 Not Found。

4.2 201 Created

201 Created 通常用来表示请求的资源不存在,但是已经被创建了。一般可以用于一些发布协议,如 Atom Publishing Protocolexternal link 等,你在使用 Atom 协议去发布一篇 blog 时,服务端可能会返回一个 201 Created 的状态码,表示你发送的请求已经被接受了,并且你的文章也已经成功创建了。

如果服务端要返回一个 201 Created 状态码,那么同时也应该在响应体头部的 Location 字段中指出新创建资源的位置,例如如果是发布一篇 blog,那么服务端在返回 201 状态码的时候,同时在 Location 字段中指出这篇新的 blog 的 URI 是什么,这样客户端可以根据这个 URI 立即去访问这篇 blog。

4.3 202 Accepted

在 201 Created 中提到,使用发布协议时,服务端可以返回一个 201 的状态码,提示客户所发送的请求已经被正确响应,并且资源也已经被正确创建了。但是在某些时候,客户所请求的资源并不是可以立即创建,可能需要被审核,可能在一个队列当中等等,在这时,服务端并不能直接返回一个 201 Created 状态码,因为返回这个状态码时,客户端认为它所发送的请求已经被正确处理了,但事实中,这个请求仍旧在处理过程之中。

这个时候,202 Accepted 状态码就是一个更好的选择。 202 Accepted 可以理解为:你的请求我收到了,但是还没有处理完成,请稍候。更实际一点,你可以理解为你去某个 Google Group 申请了成员资格,Google Group 系统接受了你的申请,但是这个 Group 是需要管理员审核的,于是,你得到了一个 202 Accepted 的状态,表示你的请求已经被收到了,但是还没有处理完成,你需要等待。

202 Accepted 要求客户端等待服务端的处理完成,但是 HTTP 协议是无状态的,因此服务端并不会也不能主动去通知客户商,说“哎,你的请求已经处理好了,地址是 xxx”。那么,跟踪请求状态这个任务就需要客户端去做。但是客户端要跟踪,也得有个对象,那个这个对象就是服务端该提供给客户端的了。

服务端在返回 202 Accepted 状态码的同时,应该给出当前请求的状态,或者给出一个状态监视器的地址。

服务端直接在响应 202 Accepted 状态码的同时给出请求处理的状态就相当于我们打电话去订餐,第一次打电话给餐厅,餐厅响应一个 202 Accepted:“啊,我们收到你的订单了,一会儿就给您送去。”,那么等了一会,怎么还没来,再打电话过去,餐厅接着响应一个 202,并告诉我们:“您的订单已经在路上了,过会就能收到了,请稍等。”,于是,我们可以通过不断地发送请求来知道我们的订单到底怎么样了。

而另外一种方式,服务端返回一个状态监视器的地址则相当在我们在申请某个 Google Group 成员资格时,提交申请之后,我们要做的就是看看邮箱,看看有没有来自 Google Group 的审核邮件。

当然,客户端与服务端对 202 Accepted 所返回的响应体应该有一个共同的规范,这样才能通过这个响应来了解请求的处理进程。

4.4 203 Non-Authoritative Information

203 表示非权威应答,说明这个响应头可能并不是原始服务器的响应头,在中间传输过程中附加了一些其他的信息,诸如通过了一些代理,加了一些额外的头部信息等等。

4.5 204 No Content

服务端返回 204 No Content 这个状态码时,表示客户端发送的已经正确响应了,但是并不会返回响应实体,只会更新头部信息。客户端在收到 204 No Content 时,当前显示的内容不会变化,显示的内容还是之前的文档,只是地址栏里的地址已经变成新的网址。

4.6 205 Reset Content

按照 RFC2616 中的描述,客户端在收到 205 Reset Content 状态码时,应该重置当前文档内容,相当于重新加载发送请求的页面,但是测试发现,Firefox 3.0 与 Chrome 依旧显示当前文档,不会重新加载,而 Safari 和 IE 则直接重定向到了所请求的网址,相当于不支持 205 Reset Content 状态码。

4.7 206 Partial Content

206 Partial Cotent 在多线程下载中相当常见,它表示服务端只处理了部分内容或者是只返回了部分内容。

按照 RFC2616 说明,在返回 206 Partial Content 状态码时,服务端需要在头部中指定一些必需的字段,如 Date、 Content-Length 等,这些头部字段的使用都有一定的条件及限制,如 Content-Length 必须与响应体的实际大小一致,如果在响应 200 OK 时服务端发送了 ETag 或者 Content-Location 的头部字段,在响应 206 Partial Content 时也必须发送同样的头部字段,具体可以参考 RFC2616 Section 10.2.7external link。

http://www.w3.org/Protocols/rfc2616/rfc2616.html
分享到:
评论

相关推荐

    HTTP状态码详细分解

    针对HTTP状态码:1xx,2xx,3xx,4xx,5xx的几十个状态码做了详细分析, 以及出现状态码代表了什么意思,个别的详细解释了出现的原因。供大家针对出现的问题思考解决方案;例如:300错误为:针对收到请求,服务器可执行...

    易语言取HTTP状态码

    HTTP状态码是服务器对客户端请求的响应,通常由三位数字组成,分为五类:1XX(信息响应)、2XX(成功)、3XX(重定向)、4XX(客户端错误)和5XX(服务器错误)。例如,200表示请求成功,404表示找不到资源,500表示...

    postman响应状态码

    ### Postman响应状态码详解 ...2xx系列状态码表示成功,3xx系列状态码表示重定向,4xx系列状态码表示客户端错误,5xx系列状态码表示服务器错误。掌握这些状态码对于前端开发、后端开发、测试和运维工作都非常重要。

    S32K1xx系列MCU应用指南之CSEc硬件加密模块使用手册_v2.2.pdf

    S32K1xx系列微控制器(MCU...S32K1xx系列MCU的应用指南之CSEc硬件加密模块使用手册是开发者在设计和实现汽车电子安全系统时不可或缺的重要资料,它能够帮助开发者充分利用CSEc模块的功能,保护系统的数据安全和完整性。

    db2附录A中sql状态码查看

    对于使用IBM DB2 Universal Database(以下简称DB2)的用户而言,掌握如何查看并解读SQL状态码(包括SQLSTATE和SQLCODE)是进行故障排查的基础技能之一。本文将基于DB2附录A中的内容,详细介绍SQL状态码的作用、分类...

    HTTP 状态码 大全

    1xx状态码表示接收到请求并且正在处理。这些状态码主要用于通知客户端后续的动作,但客户端无需为此采取行动。这类状态码并不常见。 - **100 继续**:指示客户端可以继续执行请求,或如果请求已经完成,则忽略该...

    HTTP状态码详解

    对于4XX状态码,通常需要检查请求参数和URL是否正确;5XX状态码则意味着服务器存在问题,可能需要排查服务器配置、代码错误或是资源不足等问题。通过合理的错误处理机制,如返回友好的错误信息,可以提升用户体验。 ...

    常见的http状态码

    这些状态码分为五大类:1xx(信息性状态码)、2xx(成功状态码)、3xx(重定向状态码)、4xx(客户端错误状态码)以及5xx(服务器错误状态码)。 #### 三、具体状态码详解 ##### 1xx(信息性状态码) 这类状态码...

    取HTTP状态码.rar

    1. 1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态码,如100(继续)。 2. 2xx(成功):表示成功处理了请求的状态码,如200(成功),表明请求已被正常处理。 3. 3xx(重定向):表示要完成请求,...

    tm16xx系列驱动程序

    例如,它可能定义了与TM16XX芯片通信的I/O端口映射,如`#define TM16XX_DATA_PIN`和`#define TM16XX_CLK_PIN`,以及相关的枚举类型来表示不同命令和状态。 在实际应用中,开发者可以根据具体使用的单片机型号,如...

    标准http问题状态码

    1xx(Informational 1xx)状态码表示临时响应,即服务器正在处理请求,但还没有完成。这些状态码在HTTP/1.0中未定义,主要用作实验性用途。例如,100 Continue表明服务器已接收到部分请求,客户端应继续发送剩余的...

    HTTP状态码完整列表

    1xx(临时响应):这些状态码表示服务器已接收到请求,但需要进一步操作。例如,100(继续)用于告知客户端服务器已接收到部分请求,可以继续发送剩余数据;101(切换协议)则表示服务器同意切换到请求的新协议。 2...

    http状态码汇总http网络

    1. 1XX(临时响应):这些状态码表示临时响应,告知客户端服务器已经收到请求,并且还在继续处理。 - 100(继续):客户端应继续发送请求的剩余部分。 - 101(切换协议):服务器将切换到请求头中指定的新协议。 ...

    HTTP状态码.pdf

    这类状态码表示临时响应,用于通知客户端其后续操作,但在HTTP/1.0中未定义任何1xx状态码,因此它们不作为对HTTP/1.0请求的合法响应。在HTTP/1.1中,此类状态码主要用于服务器推送信息,如`100 Continue`指示客户端...

    HTTP 状态码

    HTTP协议定义了多种状态码,每个状态码都是三位数字,分为五类:信息响应(1XX),成功响应(2XX),重定向(3XX),客户端错误(4XX)和服务器错误(5XX)。这些状态码提供了关于请求是否被成功处理的信息。 1. ...

    http状态码详解.docx

    1. **1XX** - 信息性状态码:这类状态码用于传递请求处理过程中的临时信息,例如确认接收到了请求或正在转发请求。由于这类状态码主要用于协议级别的交互,并不常出现在日常应用中,因此对开发者而言相对陌生。 -...

    HTTP响应状态码

    1. 1XX(临时响应):这些状态码表示临时响应,并且需要请求者继续执行操作。例如,100(继续)状态码表示服务器已接收到请求头,客户端应继续发送请求体。 2. 2XX(成功):这类状态码表示请求已被成功接收、理解...

    javaweb状态码全集.zip

    1. 1XX(临时响应):表示临时响应并需要请求者继续执行操作的状态码。例如100(继续)。 2. 2XX(成功):表示成功处理了请求的状态码。最常见的是200(OK),表明服务器已成功返回请求的数据。 3. 3XX(重定向):...

    http状态码1

    2. **2xx(成功状态码)**:这类状态码表示客户端的请求已被成功接收、理解和处理。其中,200 "OK" 是最常见的状态码,表明请求正常完成;201 "Created" 表示请求已被处理,并且服务器创建了新的资源;202 "Accepted...

    如何选择正确的HTTP状态码

    1. 1xx(信息性状态码):提供一个临时响应,表示处理正在进行中。 2. 2xx(成功状态码):表示请求已成功被服务器接收、理解并接受。 3. 3xx(重定向状态码):需要后续操作才能完成这个请求。 4. 4xx(客户端错误...

Global site tag (gtag.js) - Google Analytics