常见的状态码有哪些?
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 请求上。
客户端错误
服务器错误
0条评论