一张图搞清楚HTTP状态码

HTTP状态码的基本概念

在客户端和服务器连接交互的时候,一般是客户端先给服务器发送请求,然后服务器返回结果。客户端和服务器之间的交互非常频繁,涉及到很多种不同类型的操作,大多数的时候服务器能成功返回结果,有时候也会出错,有的时候还需要重定向,让客户端访问新的地址。

那么服务器是如何通知客户端,操作是成功还是失败?或者有其他的一些情况呢?

答案就是通过HTTP状态码。

HTTP状态码是作为服务器对客户端HTTP请求的响应。它们是一系列标准化的三位数字代码,用于告知客户端请求的处理情况。每个状态码的第一个数字标识了响应的类型。

状态码分类

  • 1xx(信息响应):表示服务器收到请求,需要请求者继续执行操作。
  • 2xx(成功):表示请求成功,请求被成功接收并处理。
  • 3xx(重定向):表示重定向,需要进一步的操作以完成请求。
  • 4xx(客户端错误):表示客户端错误,请求包含语法错误或无法完成请求。
  • 5xx(服务器错误):表示服务器错误,服务器在处理请求的过程中发生了错误。

HTTP状态码介绍

1xx(信息响应)

状态码英文名称描述
100Continue服务器已经接收到请求头,客户端应继续发送请求主体。
101Switching Protocols服务器即将切换的协议。

2xx(成功)

状态码英文名称描述
200OK请求成功,响应体随之返回了请求的资源。在浏览器请求网页或API请求数据时常见此状态码。简单来说,它告诉客户端:“你的请求已经成功处理,并且所请求的资源在消息体中。”
201Created该请求已成功,并因此创建了一个新的资源。这通常是在 POST 请求,或是某些 PUT 请求之后返回的响应。这个状态码的核心含义是:“你的请求已成功,并且因此创建了一个新的资源。”
202Accepted已经接受请求,但未处理完成。
203Non-Authoritative Information非授权信息,表示服务器已成功处理请求,但返回的信息可能来自其他地方,而非原始服务器。
204No Content无内容,服务器成功处理了请求,但不需要返回任何内容。
205Reset Content重置内容,请求已经成功处理,现在应该重置表单,以便用户可以继续输入新的信息 。
206Partial Content部分内容,服务器已经成功处理了部分GET请求。比如断点续传,在下载大文件时,如果下载过程中断,可以从上次中断的地方恢复下载,而不是重新开始。。

3xx(重定向)

状态码英文名称描述
300Multiple Choices多种选择,请求的资源包括多个可选项,客户端应该根据这些选项选择一个进行访问。
301Moved Permanently永久移动,表示所请求的资源已被永久移动到了新的位置,并且将来对此资源的引用应该使用返回的一个或多个URI。这是一种重定向状态码,用于告知客户端资源的新位置。
302Found临时移动,表示请求的资源临时移动到了一个不同的URI,与301不同的是,302表示这种重定向只是暂时的。
303See Other查看其它地址,将客户端重定向到不同的URI,这是对原始请求的响应,但响应本身位于另一个URI。这通常用于在POST请求之后进行,指示客户端向另一个URI发出GET请求以检索操作结果。
304Not Modified未修改,这意味着客户端缓存的版本仍然是最新的,因此不需要重新下载资源,所以客户端只需访问缓存获取数据就行了。
305Use Proxy使用代理,所请求的资源必须通过代理访问
306Unused已经被废弃的HTTP状态码
307Temporary Redirect临时重定向,307状态码与302 Found非常相似,都用于表示资源临时性的重定向到另一个URI。当收到307响应时,客户端应该对新的URI重新发起请求,但是与302不同的是,307保证请求方法和请求体不会改变(例如,POST请求不会变成GET)。这使得307更适合于需要保留请求方法的场景,例如表单提交。

4xx(客户端错误)

状态码英文名称描述
400Bad Request服务器无法理解客户端的请求,因为请求的语法错误或格式不正确。它通常发生在客户端发送了错误的请求数据或格式,如错误的请求行或头部,或无效的请求消息体。
401Unauthorized请求需要用户验证,如果之前已经发送过认证信息,那么401表示认证失败。它通常用于表示客户端尝试访问受保护的资源但没有提供正确的认证证书,如用户名和密码。
402Payment Required保留,将来使用。在未来,它可能会用于数字支付系统。
403Forbidden服务器理解了客户端的请求,但是拒绝执行。这通常是由于服务器上的访问控制规则造成的,比如客户端没有足够的权限访问特定的资源。
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面。
405Method Not Allowed客户端请求中的方法被禁止,这个状态码表示服务器已经识别了请求的方法(如GET、POST、PUT等),但该方法对于请求的资源是禁用的。例如,尝试用POST方法访问一个只允许GET请求的URL。
406Not Acceptable服务器无法生成客户端在请求的Accept头中指定的内容特性响应。例如,客户端请求JSON格式的数据,但服务器只能提供XML格式。
407Proxy Authentication Required请求要求代理的身份认证,类似于401,但是指出客户端必须先在代理服务器上进行认证。
408Request Time-out服务器等待客户端发送的请求时间过长,超时。
409Conflict表示请求与服务器当前状态冲突,例如多个同步更新之间的编辑冲突。
410Gone请求的资源已被永久删除,不再可用。与404不同,410指明这是一个已知的条件,资源以前是存在的。网站设计人员可通过301代码指定资源的新位置。
411Length Required服务器拒绝不含有效内容长度(Content-Length)头的请求。某些服务器配置要求必须知道请求的大小。
412Precondition Failed客户端在其请求中设置的前提条件失败。例如,客户端可能发送了“If-Match”请求头来基于特定版本的资源进行更新,但是资源的当前版本与客户端的不匹配。
413Request Entity Too Large由于请求的实体过大,服务器无法处理,超出了服务器愿意或能够处理的范围。
414Request-URI Too Large请求的URI过长(URI通常为网址),服务器无法处理。
415Unsupported Media Type请求附带的媒体格式,服务器无法处理。
416Requested range not satisfiable客户端在请求中指定的Range头无法满足,可能是请求的范围超出了目标URI的数据大小。
417Expectation Failed服务器无法满足Expect请求头中的期望。例如,当客户端在其HTTP请求头中设置了“Expect”头字段,它可能包含了一个特定的预期,例如“100-continue”,表示客户端希望在发送请求的主体之前得到服务器的确认。如果服务器无法满足这个预期,或者不理解请求头中的“Expect”字段,它会返回417 Expectation Failed状态码。

5xx(服务器错误)

状态码英文名称描述
500Internal Server Error服务器内部错误,无法完成请求。500错误是一个“服务器端”错误,意味着问题出在服务器上,而不是客户端请求有误。这可能是由于服务器程序错误、配置问题或资源不足导致。
501Not Implemented服务器不支持当前请求所需的功能。当服务器不识别请求方法,并且无法支持其对任何资源的处理时,就会返回这个状态码。比如,客户端发送了一个服务器不识别的自定义请求方法。
502Bad Gateway服务器作为网关或代理,从上游服务器收到无效响应。502错误表明你正在访问的服务器是一个网关或代理服务器,而它在处理请求时从上游服务器或辅助服务器接收到了无效的响应。
503Service Unavailable由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是暂时的,并且将在一段时间以后恢复。如果能够预计延迟时间,那么响应中可以包含一个Retry-After头用以标明这个延迟时间。如果没有给出这个Retry-After信息,那么客户端应当以处理500响应的方式处理它。
504Gateway Time-out作为网关或代理的服务器未能在允许的时间内从上游服务器(或辅助服务器)接收请求。504错误与502错误相似,但区别在于502错误表明无效响应,而504错误是由于响应超时。
505HTTP Version not supported服务器不支持或拒绝支持在请求中使用的HTTP协议版本。

常见的HTTP状态码解析

200 OK

看到“200 OK”就表示请求成功了,并且服务器端的内容已经正常返回。

在这里插入图片描述

304 Not Modified

表示服务器上的资源未修改,这意味着客户端缓存的版本仍然是最新的,因此不需要重新下载资源,所以客户端只需访问缓存获取数据就行了。

在这里插入图片描述

400 Bad Request

服务器无法理解客户端的请求,因为请求的语法错误或格式不正确。它通常发生在客户端发送了错误的请求数据或格式,比如下图,在应该填写时间的地方填了一大串数字。
在这里插入图片描述
在这里插入图片描述

404 Not Found

服务器无法根据客户端的请求找到资源(网页),通常是客户端发送给服务器的URL写错了。

在这里插入图片描述
在这里插入图片描述
我们上网的时候输错网址,经常能看到“你访问的页面不存在”。

在这里插入图片描述

500 Internal Server Error

服务器内部错误,无法完成请求。500错误是一个“服务器端”错误,意味着问题出在服务器上,而不是客户端请求有误。这可能是由于服务器程序错误、配置问题或资源不足导致。

下图是因为用户输入的金额太大,超过数据库字段定义的长度,导致服务器上的程序出错了。

在这里插入图片描述
在这里插入图片描述

最后

HTTP 状态码能够非常清楚地描述服务器的当前状态,用来提示客户端下一步的操作。

除此之外,HTTP 状态码还有一个作用,就是能有效防止程序员同学们甩锅,当系统出现一个bug的时候,他们第一反应大概率是:这肯定不是我写的代码出问题了。

但是,如果服务器返回4xx错误,那大概率就是前端同学的锅,前端同学就要第一时间介入;如果服务器返回5xx错误,就可以理直气壮地找后端同学解决问题了。

好了,今天就先讲到这里,我们下次再见。

参考资料:
HTTP 响应状态码 - HTTP | MDN (mozilla.org)
HTTP状态码 - 维基百科,自由的百科全书 (wikipedia.org)
HTTP 状态码 | 菜鸟教程 (runoob.com)
rfc7231

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/358773.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DC-磁盘配额(23国赛真题)

2023全国职业院校技能大赛网络系统管理赛项–模块B:服务部署(WindowServer2022) 文章目录 DC-磁盘配额题目配置步骤验证查看DC2驱动器C:\的磁盘配额,限制磁盘空间,警告等级等配置 DC-磁盘配额 题目 在DC2驱动器C:\上…

全新魅思V20正规视频影视系统源码/APP+H5视频影视源码

全新魅思V20正规视频影视系统源码,APPH5视频影视源码。会员花费三千购入的,具体搭建教程放压缩包了! 有兴趣的下载自行研究吧,搭建一共要用到3个域名,可以拿二级域名搭建。

PMP重考流程与费用

很多参加PMP考试的考生都经历过辛勤的学习过程,特别是那些在毕业几年后才开始备考的人。对大多数人来说,PMP考试都是一项艰难的任务。尽管PMP考试的平均通过率超过90%,但仍然有些人无法在首次尝试中通过考试。那么,如果一次没有通…

Linux ---- Shell编程之正则表达式

一、正则表达式 ​ 由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用…

Apache POI 处理excel文件 记录用法

Apache POI 写excel public static void write() throws IOException {//再内存中创建了一个Excel文件XSSFWorkbook excel new XSSFWorkbook();//创建一个sheet页XSSFSheet sheet excel.createSheet("info");//这里创建行对象,这里的rownum 是从0开始的,类似于数…

Redis学习——高级篇①

Redis学习——高级篇① Redis7高级之单线程和多线程(一) 一、Redis单线程VS多线程1.Redis的单线程部分1.1 Redis为什么是单线程?1.2 Redis所谓的“单线程”1.3 Redis演进变化1.3.1 Redis 3.x 单线程时代性能很快的原因1.3.2…

Python处理图片生成天际线(2024.1.29)

1、天际线简介 天际线(SkyLine)顾名思义就是天空与地面的边界线,人站在不同的高度,会看到不同的景色和地平线,天空与地面建筑物分离的标记线,不得不说,每天抬头仰望天空,相信大家都可…

窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算

在当今计算领域中,存内计算技术凭借其出色的向量乘矩阵操作效能引起了广泛关注。本文将深入研究基于向量乘矩阵的存内计算原理,并探讨几个引人注目的代表性工作,如DPE、ISAAC、PRIME等,它们在神经网络和图计算应用中表现出色&…

三维模型设计新纪元:3D开发工具HOOPS在机械加工行业的应用与优势

在当今快速发展的科技时代,机械加工行业正经历着巨大的变革,而HOOPS技术正是其中一项重要的创新。HOOPS技术不仅仅是一种用于处理和可视化计算机辅助设计(CAD)数据的工具,更是机械加工领域中提升效率、优化设计的利器。…

SI3933 15k-125kHZ低频唤醒开发技术资料

SI3933完美兼容:AS3933.PAN3501,GC3933Si3933 是一款三通道的低功耗 ASK 接收机,可用于检测 15kHz-150kHz 低频载波频率的数字信号,并产生唤醒信号。内部集成的校验器用于检测 16 位或 32 位曼彻斯特编码的唤醒向量,且支持两次重复…

超声波自动气象站是什么?

TH-CQX12超声波自动气象站是一种利用超声波技术进行气象观测和数据采集的自动化设备。它能够实时监测温度、湿度、风速、风向、气压、雨量等多种气象要素,并通过无线传输方式将数据发送到数据中心进行分析和处理。 与传统气象站相比,超声波自动气象站具有…

申万宏源:证券低时延交易系统全链路自主可控创新实践 |论坛实录

由中科驭数主办的第二届证券基金行业先进计算技术大会暨2024低时延技术创新实践论坛(上海站)在上海举行。会上各位嘉宾深入的分享,吸引了不少行业同仁对本次会议干货内容的关注。特此,中科驭数整理部分演讲者发言实录,…

ARM汇编 2.arm常用指令

MOV 赋值操作 寄存器 < 寄存器/存储器/立即数 MOV{条件}{S} 目的寄存器&#xff0c;源操作数 没有S时指令不更新 CPSR 中条件标志位的值 立即数&#xff1a;由0-255之间的数据循环右移偶数位生成。(移动规则不用掌握) #0xfff不是立即数&#xff0c;而0x80000001是立即数 …

Mysql-ReadView + MVCC-RR 与 RC

实验准备 创建脚本 CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(16) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,age int(11) NULL DEFAULT NULL,addr varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,PRIMARY …

3款最好用的tron钱包解读:TronLink,Ledger,Bitget钱包

电子钱包是用户连接到区块链网络的重要媒介。除了接收和发送功能外&#xff0c;它还可用于传输虚拟货币。它也是使用分散应用程序&#xff08;DApp&#xff09;的必要工具&#xff01;无论您是想在ON上使用以太坊&#xff0c;EOS还是任何DApp&#xff0c;您都必须先拥有钱包。因…

vxe-table表格合并行和虚拟滚动冲突

项目一直用的vxe-table 2.0版本&#xff0c;支持表格的虚拟滚动&#xff0c;最近要做表格合并行功能&#xff0c;虚拟滚动便失效了&#xff0c;强行虚拟滚动&#xff0c;合并行会有错行现象。 vxe-table2.0给出的解释是&#xff1a;合并行不能和虚拟滚动一起使用。 目前找到两种…

华为配置小型网络WLAN 的基本业务示例

配置小型网络WLAN基本业务示例 组网图形 图1 配置小型网络WLAN基本业务组网图 小型WLAN网络简介配置注意事项组网需求数据规划配置思路操作步骤配置文件 小型WLAN网络简介 本文介绍的WLAN网络是指利用频率为2.4GHz或5GHz的射频信号作为传输介质的无线局域网&#xff0c;相对于有…

【css】设置渐变阴影

css的属性中没有直接设置渐变阴影的&#xff0c;但是可以通过伪元素去实现。 .box-wrap{width: 100%;display: grid;place-content: center; } .box {width: 150px;height: 150px;background: #eee;border: 1px solid #585252;position: relative;transform: translate(0);/* …

论文阅读,Domain Specific ML Prefetcher for Accelerating Graph Analytics(一)

目录 一、Article:文献出处&#xff08;方便再次搜索&#xff09; &#xff08;1&#xff09;作者 &#xff08;2&#xff09;文献题目 &#xff08;3&#xff09;文献时间 &#xff08;4&#xff09;引用 二、Data:文献数据&#xff08;总结归纳&#xff0c;方便理解&am…

微调入门篇:大模型微调的理论学习

1、为什么大模型微调 之前在《大模型这块蛋糕,想吃吗》介绍了普通人如何搭上大模型这块列车, 其中有一个就是模型微调,这个也是未来很多IT公司需要发力的方向,以及在《垂直领域大模型的应用更亲民》中论述了为什么微调适合大家,以及微调有什么价值? 作为小程序猿在开始进行微…