在我们日常 Web 开发中,或多或少的都接触过 HTTP 状态码,那这些状态码代表什么意思呢?熟悉这些状态码又有什么好处呢?下面我就为大家一一道来,可以把本片文章‘收藏’以备不时之需。

HTTP 状态代码表示什么意思?

HTTP 状态码(英语:HTTP Status Code)是用以表示 HTTP 响应状态的 3 位数字代码。比如:

  • 1xx:消息
  • 2xx:成功
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务器错误

熟记这些状态码可以让我们在快速定位 Web 开发中遇到的问题、编写符合规范的接口服务,那么下面就让我们看看这些死板的 3 位数字都是什么意思。撸猫爱好者,请注意:前方高能,屏住呼吸,一大波喵星人即将来袭!

一、1xx 消息

这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,表示客户应该采取的其它行动。

100 Continue(继续)

服务器已经接收到请求头,请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。

101 Switching Protocols(切换协议)

服务器已经理解了客户端的请求,并将通过 Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应后,服务器将会切换到在 Upgrade 消息头中定义的那些协议。

只有在切换新的协议更好的进行通信。例如:切换到新的 HTTP 版本(如 HTTP/2)比旧版本更有优势、或切换到一个实时且同步的协议(如 WebSocket)等

二、2xx 成功

这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。

200 OK(成功)

已成功处理了请求。出现此状态码是表示正常状态。

201 Created(已创建)

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

202 Accepted(已接受)

服务器已接受请求,但尚未处理。

204 No Content(无内容)

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

206 Partial Content(部分内容)

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

三、3xx 重定向

这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。
当且仅当后续的请求所使用的方法是 GET 或者 HEAD 时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。

客户端应当自动监测无限循环重定向(例如:A->A,或者A->B->C->A),因为这会导致服务器和客户端大量不必要的资源消耗。按照 HTTP/1.0 版规范的建议,浏览器不应自动访问超过5次的重定向。

300 Multiple Choices(多种选择)

针对请求,服务器可执行多种操作。服务器可根据请求者选择一项操作,或提供操作列表供请求者选择。

301 Moved Permanently(永久移动)

请求的资源已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。

302 Move Temporarily(临时移动)

请求的资源临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在 Cache-Control 或 Expires 中进行了指定的情况下,这个响应才是可缓存的。

303 See Other(查看其他位置)

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

304 Not Modified(未修改)

自从上次请求后,请求的资源未修改过。服务器返回此响应时,不会返回资源的内容,因此可节省带宽和开销。

305 Use Proxy(使用代理)

请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。

307 Temporary Redirect(临时重定向)

服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。 此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉搜索引擎爬虫某个页面或网站已经移动,因为搜索引擎爬虫会继续抓取原有位置并编制索引。

四、4xx 客户端错误

这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。

400 Bad Request(错误请求)

服务器不理解请求的语法。

401 Unauthorized(未授权)

请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。

403 Forbidden(禁止)

服务器拒绝请求。

404 Not Found(未找到)

服务器找不到请求的资源。 例如,对于服务器上不存在的资源经常会返回此代码。

405 Method Not Allowed(方法不被允许)

请求中的方法不被允许(HTTP METHOD)。

406 Not Acceptable(不接受)

请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体,该请求不可接受。

408 Request Timeout(请求超时)

服务器等候请求时发生超时。

409 Conflict(冲突)

由于和被请求的资源的当前状态之间存在冲突,请求无法完成。

410 Gone(已删除)

如果请求的资源已永久删除,服务器就会返回此响应。

411 Length Required(需要有效长度)

服务器不接受不含有效内容长度标头字段的请求。

412 Precondition Failed(未满足前提条件)

服务器未满足请求者在请求中设置的其中一个前提条件。

413 Request Entity Too Large(请求实体过大)

服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

414 Request-URI Too Long(请求的 URI 过长)

请求的 URI(通常为网址)过长,服务器无法处理。

415 Unsupported Media Type(不支持的媒体类型)

请求的格式不受请求页面的支持。

416 Requested Range Not Satisfiable(请求范围不符合要求)

如果页面无法提供请求的范围,则服务器会返回此状态代码。

417 Expectation Failed(未满足期望值)

服务器未满足"Expect"请求头字段的要求。

429 Too Many Requests(请求太频繁)

用户在给定的时间内发送了太多的请求。旨在用于网络限速。

431 Request Header Fields Too Large(请求头字段过大)

服务器不愿处理请求,因为一个或多个头字段过大。

五、5xx 服务器错误

这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

500 Internal Server Error(服务器内部错误)

服务器遇到错误,无法完成请求。

502 Bad Gateway(错误网关)

服务器作为网关或代理,从上游服务器收到无效响应。

503 Service Unavailable(服务不可用)

服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

504 Gateway Timeout(网关超时)

服务器作为网关或代理,但是没有及时从上游服务器收到请求。

文中的图片整理自 https://http.cat/,内容整理自“维基百科 HTTP 状态码”

最后

欢迎留言写出你家喵星人的品种和你对他的“爱称”,我很好奇有没有给自己家猫起名叫 “404” 的小伙伴

喵星人教你 HTTP 状态码的更多相关文章

  1. 喵星人教你记 HTTP 状态码

    记忆HTTP状态码是有一些困难的,因为状态码很多且很难记忆.GirlieMac,也就是Tomomi Imura利用她巧妙的构思,PS了一系列的HTTP状态信息.在你看过这些图片之后,你绝对可以记住一些 ...

  2. 一篇学习HTTP状态码的神文:我与依依的橙色岁月

    好的,事情是这样的,数年前,我曾有过一段美好的夏日恋情,在此与大家分享. 依依 这个女孩叫做依依 ,她是 80 后的,生日是 1989 年 3 月吧,忘了哪一天了,分手太久了,记不起来了. 转学生 我 ...

  3. Http状态码之:301、302重定向

    概念 301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一.如果可能,拥有链接编辑功能的客户端应当自动把请求的地 ...

  4. HTTP常用状态码分析

    不管是面试还是工作中,经常会碰到需要通过HTTP状态码去判断问题的情况,比如对于后台RD,给到前端FE的一个接口,出现502或者504 error错误,FE就会说接口存在问题,如果没有知识储备,那就只 ...

  5. Java发送Http请求并获取状态码

    通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断. try { URL u = new URL("http://10.1.2.8:8080/fqz/page ...

  6. HTTP各状态码解释

      状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必 ...

  7. 关于Http状态码

    Http状态码表示Http协议所返回的响应的状态.比如客户端向服务器发送请求,如果成功的获得请求的资源,则返回的状态码为200,表示相应成功.如果请求的资源不存在,则通常返回404错误. Http状态 ...

  8. 生产环境常见的HTTP状态码列表

    生产环境常见的HTTP状态码列表(List of HTTP status codes)为: 200 - OK,服务器成功返回网页     - Standard response for success ...

  9. 常用的14种HTTP状态码速查手册

    分类 1xx \> Information(信息) // 接收的请求正在处理 2xx \> Success(成功) // 请求正常处理完毕 3xx \> Redirection(重定 ...

随机推荐

  1. WPF 3D Transparency Depth-Order Sorting

    原文:WPF 3D Transparency Depth-Order Sorting   Just a quick post here - When making WPF 3D apps, trans ...

  2. ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 登录登出 上一章节我们总算完善了注册的功能,而且也添加了一个用户,现 ...

  3. what is the difference between definition and declaration in c

    A declaration introduces an identifier and describes its type, be it a type, object, or function. A ...

  4. 网络编程Socket它TCP它TIME_WAIT国家具体解释

    下面我们用最简单的一对一的客户server编程模型重现遇到的一些问题: 初学者socket当写作socket名其妙的问题.比方说bind函数返回的常见错误是EADDRINUSE 使用以下的程序重现这个 ...

  5. C# WPF报表打印

    前天我的一个同学由于打印报表而苦恼,所以就介绍了一下WPF的打印报表,希望能帮助到大家. 展示报表 1. 首先新建项“报表”,选定项目,右击,点击“添加”->“新建项”->“报表”

  6. 简单的讲Erlang一些运营商

    Erlang 有几个运营商.对照.数学运算符.布尔运算符,旨在使这些类型的操作者的讨论,参考erlang文件,以样例说明. Erlang的比較运算符 写法例如以下: Expr1 op Expr2 1& ...

  7. 简化连接Buffer对象的过程

    上述一大段代码仅只完成了一件事情,就是连接多个Buffer对象,而这种场景需求将会在多个地方发生,所以,采用一种更优雅的方式来完成该过程是必要的.笔者基于以上的代码封装出一个bufferhelper模 ...

  8. 日志文件 清理or压缩

    1.操作前请断开所有数据库连接. 2.分离数据库 分离数据库:企业管理器->服务器->数据库->cwbase1->右键->分离数据库 分离后,cwbase1数据库被删除, ...

  9. jquery 包裹标签

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  10. 图像滤镜艺术----Brannan滤镜

    原文:图像滤镜艺术----Brannan滤镜     作为第一篇文章,本人将介绍Instagram中Brannan 滤镜的实现过程,当然,是自己的模拟而已,结果差异敬请谅解.     先看下效果图: ...