前端开发:HTTP状态码详解
三掌柜三掌柜 -前言在前端开发过程中,关于HTTP网络请求相关的使用也是必备的,尤其是前后端交互的时候,根据实际业务实现具体需求功能。前端实际开发应用场景中,比较有代表性的关于网络请求相关的使用有:跨域问题/设置代理、接口返回code码(HTTP状态码)、代理、token、cookie欺诈、GET/POST请求等等,这些都是常用知识点。那么本篇博文就来分享一下关于HTTP状态码相关的知识点,尤其是不同开头的code码代表的含义,总结一下,方便查阅使用。HTTP状态码是什么?
维基百科的解释:HTTP状态码(HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展。所有状态码被分为五类,状态码的第一个数字代表了响应的五种状态之一。所示的消息短语是典型的,但是可以提供任何可读取的替代方案。 除非另有说明,状态码是HTTP/1.1标准(RFC 7231)的一部分。
百度百科的解释:HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。所有状态码的第一个数字代表了响应的五种状态之一。
个人理解:HTTP状态码,也就是一个3位数的HTTP请求响应状态码,也就是前端开发中说的code码,接口根据状态类型来返回对应的状态码。
常见HTTP 状态码作为程序开发者,都知道且在实际开发中常见的HTTP状态码,如下所示:
200 - 请求成功;301 - 资源(网页等)被永久转移到其它URL;304 - 客户端通常会缓存访问过的资源,通过提供一个Header头信息指出客户端希望只返回在指定日期之后修改的资源信息;404 - 请求的资源(网页等)不存在;500 - 内部服务器错误。HTTP状态码分类通过上文可以知道HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。HTTP响应分为五类:信息响应(100–199)、成功响应(200–299)、重定向(300–399)、客户端错误(400–499)和服务器错误 (500–599)。具体如下表所示:
全部的HTTP状态码有很多,这里只分享常用的状态码,具体如下所示:
1、 1*开头(信息提示),表示临时的响应的状态码(注意:客户端在收到常规响应之前,应准备接收一个或多个 1 * 响应)。
100 - Continue 继续。初始请求已被接受,客户应当继续发送请求的其余部分。101 - Switching Protocols 切换协议。 服务器将遵从客户端的请求切换到另外一种协议,且只能切换到更高级的协议。2、 2**开头 (请求成功),表示成功接收处理请求的状态码。
200 - 请求成功。 服务器已成功处理了请求, 一般这表示服务器提供了请求的网页,主要是用于GET和POST请求。201 - 已创建。 请求成功并且创建了新的资源。202 - 已接受。 服务器已经接受请求,但尚未处理完毕。203 - 非授权信息。请求成功,服务器已成功处理了请求,但返回的meta信息可能来自另一来源,而是一个副本。204 - 无内容。 服务器成功处理请求,但没有返回任何内容。205 - 重置内容。 服务器成功处理请求,但没有返回任何内容,客户端应该重置文档视图。206 - 部分内容。 服务器成功处理了部分 GET 请求。3、 3** 开头 (请求被重定向),表示要完成请求,需要进一步操作的状态码(注意:一般情况下这些状态代码被用来重定向)。
300 - 多种选择。 请求的资源可包括多个位置,会相应返回一个资源特征与地址的列表,用于客户端选择。301 - 永久移动。 请求的资源已永久移动到新的位置(URI),返回信息包括新的URI,浏览器会自动重定向到新的URI,往后任何新的请求都要使用心的URI代替。302 - 临时移动。与上面的301相似,但是资源只是临时被移动,客户端应该继续使用原有的URI。303 - 查看其他地址位置。与上面的301类似,使用GET和POST请求查看, 请求应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此状态码。304 - 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个Header头信息指出客户端希望只返回在指定日期之后修改的资源。305 - 使用代理。 所有请求只能使用代理访问请求网页。若服务器返回该响应,表示请求应使用代理。306 - Switch Proxy。 在最新版的规范中,306状态码已经不再被使用,起初是指“后续请求应使用指定的代理”。307 - 临时重定向。 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。4、4**开头 (请求错误),表示请求可能会出错,妨碍了服务器的处理。
400 - 错误请求。 客户端请求语法错误,服务器不理解请求的语法。401 - 未授权。 请求要求用户进行身份验证,尤其是需要登录的网页,服务器可能返回此响应。402 - 预留。保留,将来使用。403 - 禁止。 服务器已经理解请求客户端的请求,但是服务器拒绝执行该请求。404 - 未找到。 服务器找不到客户端请求寻找的资源。405 - 方法禁用。客户端请求中的方法被禁止。406 - 不接受。 服务器无法根据客户端请求的内容特性完成请求。407 - 需要代理授权。和 401(未授权)类似,请求要求代理的身份认证。但请求者应当使用代理进行授权。408 - 请求超时。 服务器等候客户端发送的请求时间过长,超时。409 - 冲突。 服务器在完成客户端请求时发生冲突,服务器必须在响应中包含有关冲突的信息。410 - 已删除。 户端请求的资源已经不存在,如果请求的资源已永久删除,服务器就会返回此响应。411 - 需要有效长度。 服务器无法处理客户端发送的不带Content-Length的请求信息,服务器不接受不含有效内容长度标头字段的请求。412 - 未满足前提条件。 客户端请求信息的先决条件错误,服务器未满足客户端请求中设置的其中一个前提条件。413 - 请求实体过大。 服务器无法处理请求,超出服务器的处理能力,因此拒绝请求。414 - 请求的 URI 过长。 请求的 URI过长(通常为网址),服务器无法处理。415 - 不支持的媒体类型。 服务器无法处理请求附带的媒体格式,请求的格式不受请求的支持。416 - 请求范围不符合要求。 客户端请求的范围无效,如果页面无法提供请求范围,则会返回此状态码。417 - 未满足期望值。 服务器无法满足Expect的请求头字段的要求。5、 5**开头(服务器错误),表示服务器在尝试处理请求时发生内部错误(注意:极有可能是服务器本身的错误,而不是请求本身出错)。
500 - 服务器内部错误。 服务器遇到内部错误,无法完成请求。501 - 尚未实施。 服务器不具备/不支持完成请求的功能,无法完成请求。502 - 错误网关。 服务器作为网关或代理尝试执行请求时,从远程服务器接收到一个无效响应。503 - 服务不可用。 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中,通常这只是暂时状态。504 - 网关超时。 服务器作为网关或代理,但没有及时从远端服务器获取请求。505 - HTTP 版本不受支持。 服务器不支持请求中所用的 HTTP 协议的版本,无法完成处理。6、非官方的状态码
除了上面介绍的常用的HTTP状态码,还有一些非官方的状态码,具体如下所示:
7、状态码与状态不一致的情况
实际开发过程中,有时候会遇到返回的状态码响应都是错误的,但是用户可能觉察不到这种情况,比如前端应用程序内部发生报错,但是状态码依然返回200,这种情况经常遇到。
8、其他:IIS
微软互联网信息服务 (Microsoft Internet Information Services),有时候会使用额外的十进制子代码来获取更多的具体信息,但这些子代码仅仅出现在响应有效内容和文档中,但不会代替实际的HTTP状态码。
通过本文可以知道前端开发中HTTP状态码的详细内容,需要了解掌握的是五个大的状态类型表示的含义,以及常用的几个具体的状态码表示的含义,尤其是从事前端开发不就的开发者来说甚为重要,因为在前端求职面试的时候关于前端HTTP状态码相关的问题是必考内容,还有关于HTTP请求的特点的考察,所以重要性不言而喻,这里不再赘述。以上就是本文全部内容,欢迎关注三掌柜!
本文参与了「SegmentFault 思否写作挑战赛」,欢迎正在阅读的你也加入。
Tags 标签
javascriptvue.jshtml5challenge扩展阅读
HTML5离线存储
2020-03-06 14:13:06 []CSGO电竞API数据接口【West S2战队数据】分享使用演示
2020-09-03 07:18:05 []没有伞的孩子 [必须] 要学会奔跑
2020-09-17 04:49:49 []电竞APP源码开发 英雄联盟【S10战队数据】
2020-10-29 22:14:12 []Ajax实现搜索联想 搜索关键词提醒 无刷新搜索
2020-11-16 20:51:40 []websocket & swoole & swoft
2020-11-30 05:06:11 []php laravel 大批量导出 excel
2020-12-03 09:16:10 []php+js实现文件分块上传
2020-12-08 15:11:22 []基于 Vue2.0 开发的 Lumen IM 在线聊天应用
2020-12-30 13:47:54 []在解决php5 Excel文件读取时的收获
2021-01-01 22:56:28 []加个好友,技术交流
