常见的状态码有哪些?,第1张

http状态码分类:

1XX 提示信息 – 表示请求正在处理

2XX 成功 – 表示请求正常处理完毕

3XX 重定向 – 要完成请求必须进行更进一步的处理

4XX 客户端错误 – 请求有语法错误或请求无法实现

5XX 服务器端错误 – 服务器处理请求出错

常见的状态码有哪些?

① 200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;

② 404:(客户端问题)请求的资源没有找到,说明客户端错误的请求了不存在的资源;

③ 500:(服务端问题)请求资源找到了,但服务器内部发生了不可预期的错误;

④ 301/302/303:(网站搬家了,跳转)重定向

⑤ 304: Not Modified,代表上次的文档已经被缓存了,还可以继续使用。如果你不想使用本地缓存可以用Ctrl+F5 强制刷新页面

次一级常见的状态码有哪些?

1.204 No content 服务端返回的仅有状态行和响应头。不含响应主体

一般出现在只需要从客户端向服务端发送消息,而服务端不需要向客户端返回内容的情况

2.206 Partial content 客户端对服务端进行了范围请求,而服务器成功的执行了

一般出现在客户端对资源的某一部分进行请求的情况,然后服务端成功的执行了此get请求,响应报文中包含由content-range指定范围的实体内容。

3.301 Moved Permanently 永久性重定向

表示请求的资源已被分配给了新的url, 这时应该改location字段提示的url重新保存。

4.302 Found 临时性重定向

表示请求的资源已经被被分配给了新的url,希望客户端(本次)临时的使用此url进行访问。

5.303 See Other 同302,表示临时性重定向但是303状态码明确表示客户端应该采取get方法请求资源。

注意1:http相关的一些规范规定客户端在重定向时不允许改变请求方法,但现在很多现存浏览器将302响应视为303响应,并且使用get方式访问Location中规定 的url,而无视原先的请求方法。

注意2: 当301,302,303响应状态码返回时,几乎所有浏览器都会把post改成grt,并删除请求报文中的主体,之后再次自动的发送请求。

301,302,标准时禁止将post方法改为get方法的,但实际上大家都会这么做。

6.307 Temporary Redirect 临时重定向,和302一样。

302虽然禁止在重定向时把post请求变为get,但实际上大家并不遵守,而307则会遵照浏览器标准,不会总post变为get

7.400 Bad Request 客户端请求与语法错误,不能被服务器所理解

8.401 Unauthorized 表示此请求需要通过http认证,或认证失败

9.403 Forbidden 服务器收到请求,但是拒绝提供服务

10.406 non acceptable 服务端无法返回客户端需要的数据类型

11.503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

此时一般表示服务器正处于超负载,或正在进行停机维护,现在无法处理请求,如果服务端知道解决以上状况需要的时间,最后写入到Retry-After首部字段再返回给客户端。

状态码与实际情况不一致的情形

下面是工作中我们常用的15个 HTTP状态码 ,必须 牢记

如果你想深入了解具体的HTTP状态码,请参考:HTTP状态码超详细说明

这个状态码是告诉客户端应该 继续发送请求 ,这个临时响应是用来通知客户端的,部分的请求服务器已经接受,但是客户端应继续发送求请求的剩余部分,如果请求已经完成,就忽略这个响应,而且服务器会在请求完成后向客户发送一个最终的结果

这个是 最常见 的http状态码,表示服务器已经成功接受请求,并将返回客户端所请求的最终结果。

说白了,就是 一切正常

表示服务器已经接受了请求,但是 还没有处理 ,而且这个请求最终会不会处理还不确定

服务器成功处理了请求,但 没有返回任何实体内容 ,可能会返回新的头部元信息

服务器已经 成功处理了部分GET请求

类似于FlashGet或者迅雷这类的HTTP 下载工具,都是使用此类响应实现断点续传,或者将一个大文档分解为多个下载段同时下载。

客户端请求的网页已经永久移动到新的位置,当链接发生变化时,返回301代码告诉客户端链接的变化,客户端保存新的链接,并向新的链接发出请求,已返回请求结果。

请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。

如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码。

简单的表达就是:服务端已经执行了GET,但文件未变化。

关于HTTP缓存内容可参考:一文了解HTTP缓存

Web服务器通过返回HTTP 400错误告诉访问者,访问者用来访问网站的程序出错,或访问请求途中遭到破坏。

访问者试图访问受限页面但未经授权时,网站返回HTTP 401错误。错误登录尝试是导致这一错误的主因。

403错误类似于401错误,不同之处在于401错误是未经授权,而403错误是禁止访问。 任何登录对403错误都不起作用。 尝试访问(被禁止的)网站目录时,就会发生403错误。

请求失败,客户端请求的资源没有找到或者是不存在。

也是比较常见的。

服务器遇到未知的错误,导致无法完成客户端当前的请求。

作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

服务器由于临时的服务器过载或者是维护,无法解决当前的请求,以上http状态码是服务器经常返回的状态代码,用户只能通过浏览器的状态了解服务器是否正常运行,一般除了错误的状态码,都不会看到服务器的状态码的。

  1xx

  1xx表示请求已被接受,但需要后续处理。例如:

  100(Continue)

  客户端应继续发送请求。

  101(Switching Protocols)

  需要切换协议,服务器通过的Upgrade响应头字段通知客户端。

  HTML5引入的WebSocket便是这样工作的。首先客户端请求websocket所在的URL,服务器返回101,然后便建立了全双工的TCP连接。 注意Upgrade和Connection头字段属于Hop-by-hop字段,设置Websocket代理时需要继续设置这两个字段,而不是简单地转发请求。

  2xx

  请求已成功被服务器接收、理解、并接受。

  200(OK)

  请求已成功,请求所希望的响应头或数据体将随此响应返回。

  201(Created)

  请求已经被实现,而且有一个新的资源已经依据请求的需要而创建。在RESTFul风格的URL设计中,通常用来响应POST请求。

  202(Accepted)

  服务器已接受请求,但尚未处理。比如POST一个资源应当返回201,但由于性能原因未能立即创建,可以返回202。

  204(No Content)

  服务器成功处理了请求,但不需要返回任何实体内容,204响应禁止包含任何消息体。浏览器收到该响应后不应产生文档视图的变化。

  205(Reset Content)

  服务器成功处理了请求,但不需要返回任何实体内容,205响应禁止包含任何消息体。 与204不同的是,返回此状态码的响应要求请求者重置文档视图。比如用户刚刚提交一个表单,返回205后页面重置,用户可以立即填写下一个表单。

  206(Partial Content)

  HTTP协议允许分片传输。请求头中包含Range字段时,响应需要只返回Range指定的那一段。响应中应包含Content-Range来指示返回内容的范围。

  其他

  203(Non-Authoritative Information)

  207(Multi-Status)

  3xx

  这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向, 重定向目标在本次响应的Location头字段中指明。

  301(Moved Permanently)

  被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果该请求不是GET/HEAD, 浏览器通常会要求用户确认重定向。

  301通常用于网站迁移时,服务器对旧的URL进行301重定向到新的URL。这样搜索引擎可以正确地更新原有的页面排名等信息。

  302(Found)

  请求的资源现在临时从不同的URI响应请求。除非指定了Cache-Control或Expires,否则该响应不可缓存。 如果当前请求非HEAD或GET,浏览器需取得用户确认,再进行重定向。

  这很好理解,因为上下文发生了变化,比如POST请求不是幂等的。

  303(See Other)

  对应当前请求的响应可以在另一个URI上被找到,而且客户端应当采用GET的方式访问那个资源。 这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。 303响应禁止被缓存。

  303会使得浏览器直接GET那个资源,不需用户同意。这是Web应用中最常见的重定向方式。

  304(Not Modified)

  如果客户端发送了一个带条件的GET请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变。 304响应禁止包含消息体。

  304响应也是一种缓存机制。Web服务器对静态资源文件通常会采取缓存,因此在Web开发中你可以看到大量的304响应。 服务器给出的相应中通常会包含Etag来标识资源ID,比如:

  ETag: "686897696a7c876b7e"

  客户端在下次访问同一URL时会设置头字段If-None-Match(这是一个请求条件):

  If-None-Match: "686897696a7c876b7e"

  服务器返回资源前会判断Etag是否与客户端提供的If-None-Match匹配,如果匹配则说明资源未发生改变,此时应返回304

200是响应正常的意思,这个是服务器返回页面的响应头信息。里面的Transfer-Encoding:

chunked,意思是使用了提前不可知数据长度的传输方式,需要浏览器继续读取响应,接下来才知道真实的数据长度。

网页返回状态码的含义详细介绍

1、

1xx(临时响应)用于表示临时响应并需要请求者执行操作才能继续的状态代码。

(1)100(继续)

请求者应当继续提出请求。服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收其余部分。

(2)101(切换协议)

请求者已要求服务器切换协议,服务器已确认并准备进行切换。

2、

2xx(成功)用于表示服务器已成功处理了请求的状态代码。

(1)200(成功)

服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。如果您的

robotstxt

文件显示为此状态,那么,这表示

Googlebot

已成功检索到该文件。

(2)201(已创建)

请求成功且服务器已创建了新的资源。

(3)202(已接受)

服务器已接受了请求,但尚未对其进行处理。

(4)203(非授权信息)

服务器已成功处理了请求,但返回了可能来自另一来源的信息。

(5)204(无内容)

服务器成功处理了请求,但未返回任何内容。

(6)205(重置内容)

服务器成功处理了请求,但未返回任何内容。与

204

响应不同,此响应要求请求者重置文档视图(例如清除表单内容以输入新内容)。

(7)206(部分内容)

服务器成功处理了部分

GET

请求。

3、

3xx(已重定向)要完成请求,您需要进一步进行操作。通常,这些状态代码是永远重定向的。Google

建议您在每次请求时使用的重定向要少于

5

个。您可以使用网站管理员工具来查看

Googlebot

在抓取您已重定向的网页时是否会遇到问题。诊断下的抓取错误页中列出了

Googlebot

由于重定向错误而无法抓取的网址。

(1)300(多种选择)

服务器根据请求可执行多种操作。服务器可根据请求者

(User

agent)

来选择一项操作,或提供操作列表供请求者选择。

(2)301(永久移动)

请求的网页已被永久移动到新位置。服务器返回此响应(作为对

GET

HEAD

请求的响应)时,会自动将请求者转到新位置。您应使用此代码通知

Googlebot

某个网页或网站已被永久移动到新位置。

(3)302(临时移动)

服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应

GET

HEAD

请求的

301

代码类似,会自动将请求者转到不同的位置。但由于

Googlebot

会继续抓取原有位置并将其编入索引,因此您不应使用此代码来通知

Googlebot

某个页面或网站已被移动。

(4)303(查看其他位置)

当请求者应对不同的位置进行单独的

GET

请求以检索响应时,服务器会返回此代码。对于除

HEAD

请求之外的所有请求,服务器会自动转到其他位置。

(5)304(未修改)

自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。

(6)305(使用代理)

请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。

(7)307(临时重定向)

服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应

GET

HEAD

请求的

301

代码类似,会自动将请求者转到不同的位置。但由于

Googlebot

会继续抓取原有位置并将其编入索引,因此您不应使用此代码来通知

Googlebot

某个页面或网站已被移动。

需要请求者继续执行操作的状态码

请求成功

重定向,完成请求需要进一步操作

301 和 302 应该是支持任意方法的重定向,但是浏览器都使用 get 方法重定向

301、308 都是永久重定向

302、303、307 都是临时重定向

302 状态码表示目标资源临时移动到了另一个 URI 上。由于重定向是临时发生的,所以客户端在之后的请求中还应该使用原本的 URI。

服务器会在响应 Header 的 Location 字段中放上这个不同的 URI。浏览器可以使用 Location 中的 URI 进行自动重定向。

303 状态码表示服务器要将浏览器重定向到另一个资源,这个资源的 URI 会被写在响应 Header 的 Location 字段。从语义上讲,重定向到的资源并不是你所请求的资源,而是对你所请求资源的一些描述。

303 常用于将 POST 请求重定向到 GET 请求,比如你上传了一份个人信息,服务器发回一个 303 响应,将你导向一个“上传成功”页面。

不管原请求是什么方法,重定向请求的方法都是 GET(或 HEAD,不常用)

到这里你可能发现,303 和 302 的作用很类似,除去语义差别,似乎是 302 包含了 303 的情况。

307 的定义实际上和 302 是一致的,唯一的区别在于,307 状态码不允许浏览器将原本为 POST 的请求重定向到 GET 请求上。

302 允许各种情况的重定向,一般情况下会实现为到 GET 的重定向,但是不能确保 POST 会重定向为 POST;303 会允许任意请求到 GET 的重定向;307 和 302 一样,但是不允许 GET 到 POST 的重定向

301 状态码表明目标资源被永久的移动到了一个新的 URI,任何未来对这个资源的引用都应该使用新的 URI。

308 的定义实际上和 301 是一致的,唯一的区别在于,308 状态码不允许浏览器将原本为 POST 的请求重定向到 GET 请求上。

客户端错误

服务器错误

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 常见的状态码有哪些?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情