当前位置: 首页 > news >正文

http 超全状态码

HTTP(超文本传输协议)是一种用于传输超文本的应用层协议。在进行HTTP通信时,服务器会向客户端返回一个状态码,用于表示请求的处理结果。

状态码由3位数字组成,使用第1个数字表示响应的类别,一共5种,分别使用 1~5 来表示,状态码的后两位则没有特殊的含义。HTTP 状态码的类别及说明如下表所示:

状态码类别含义描述
1xx信息性状态码表示请求已被接收,继续处理
2xx成功状态码表示请求已成功被服务器接收、理解和处理
3xx重定向状态码表示需要进一步操作以完成请求
4xx客户端错误状态码表示客户端发送的请求有错误
5xx服务器错误状态码表示服务器在处理请求时发生了错误

下面来详细介绍一下 HTTP 中的状态码,与君共勉 ❤🧡💛💚💙💜

1. 消息:1xx

1xx 类型的状态码代表客户端的请求已被服务器接受,但还需要继续处理。这类响应是临时响应,只包含响应行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义 1xx 这一类型的状态码,所以除非在特定的条件下,否则服务器不会向客户端发送 1xx 类型的响应。

状态码中文名称英文名称描述
100继续Continue服务器已经接收到请求的一部分,客户端可以继续发送剩余的请求
101切换协议Switching Protocols服务端已经根据客户端的请求切换了协议版本,注意:只能向更高级的协议版本切换,例如,切换到 HTTP 的新版本协议
102处理中Processing服务端已收到并且正在处理这个请求,但暂无响应
103早期提示Early Hints允许服务端在主响应头之前先发送部分响应头,以达到预加载文件的目的

2. 成功:2xx

2xx 类型的状态码代表客户端的请求已成功被服务端接收,并成功处理了这个请求

状态码中文名称英文名称描述
200成功OK请求已成功处理,并返回所请求的资源
201已创建Created请求已成功处理,并在服务器上创建了新的资源
202已接受Accepted该请求正在进行处理,但尚未处理完成
203非授权信息Non-Authoritative Information请求成功。但返回的 meta 信息不在原始的服务器,而是一个副本
204无内容No Content服务器成功处理了请求,但没有返回任何内容
205重置内容Reset Content请求成功,但没有返回任何响应体。与状态码 204 不同的是,此状态码告诉客户端应立即重置发送此请求的文档视图。比如在用户提交表单后,立即重置表单,以便用再次输入
206部分内容Partial Content服务端成功处理了部分 GET 请求,像迅雷这类的 HTTP 下载工具就是使用此类响应实现断点续传或者分段下载的
207多个状态Multi-Status由 WebDAV(RFC 2518) 扩展的状态码,代表之后的响应体将是一个 XML 消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码
208已报告Already Reported已报告(webDAV)
226已完成响应IM Used已完成响应

3. 重定向:3xx

3xx 类型的状态码代表需要客户端采取进一步的操作才能完成请求。通常这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。

当且仅当后续的请求所使用的方法是 GET 或者 HEAD 时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。客户端应当自动监测并避免无限循环的重定向(例如:A->A,或者 A->B->C->A),因为这会导致服务器和客户端资源的消耗。按照 HTTP/1.0 版协议的规范,浏览器重定向的次数不得超过 5 次。

状态码中文名称英文名称描述
300多种选择Multiple Choices请求有多种可能的响应,客户端需要选择其中的一个进行重定向
301永久重定向Moved Permanently请求的资源已经被永久移动到新的URL
302临时重定向Found请求的资源暂时被移动到新的URL
303查看其他位置See Other对当前请求的响应可以在另一个 URL 上找到,而且客户端应当采用 GET 的方式访问那个资源
304未修改Not Modified所请求的资源(自上次访问)并没有改变时,服务器会返回此状态码,但响应中不会包含响应体,因此客户端可以使用上次请求缓存的资源
305使用代理Use Proxy所请求的资源必须通过指定的代理才能访问
306切换代理Switch Proxy在最新版的规范中,该状态码已经被弃用
307临时重定向Temporary Redirect与 302 类似,表示所请求的资源需要临时从不同的 URL 响应
308永久重定向Permanent Redirect

已为目标资源分配了一个新的永久 URL,以后对该资源的任何引用都应使用其中一个 URL。

类似于 301,不同之处在于它不允许将请求方法从 POST 更改为 GET

4. 请求错误:4xx

4xx 类型的状态码代表了客户端可能发生了错误,导致服务器无法完成响应,服务器就会返回一个解释当前错误状况的响应体。这一类状态码适用于任何请求方法(HEAD 请求除外),客户端(浏览器)会自动显示出响应中的响应体,也就是我们常说的错误信息。

状态码中文名称英文名称描述
400错误请求Bad Request服务器无法理解请求的语法
401未授权Unauthorized请求需要身份验证
401.1表示登录失败
401.2表示服务器配置导致登录失败
401.3表示由于 ACL 对资源的限制而未获得授权
401.4表示筛选器授权失败
401.5表示ISAPI/CGI 应用程序授权失败
401.7表示访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用
402所需付款Payment Required该状态码是为了将来可能的需求而预留的
403禁止Forbidden服务器拒绝请求访问
403.1表示执行访问被禁止
403.2表示读访问被禁止
403.3表示写访问被禁止
403.4表示要求 SSL
403.5表示要求 SSL 128
403.6表示IP 地址被拒绝
403.7表示要求客户端证书
403.8表示站点访问被拒绝
403.9表示用户数过多
403.10表示配置无效
403.11表示密码更改
403.12表示拒绝访问映射表
403.13表示客户端证书被吊销
403.14表示拒绝目录列表
403.15表示超出客户端访问许可
403.16表示客户端证书不受信任或无效
403.17表示客户端证书已过期或尚未生效
403.18表示在当前的应用程序池中不能执行所请求的 URL。这个错误代码为 IIS 6.0 所专用
403.19表示不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用
403.20表示Passport 登录失败。这个错误代码为 IIS 6.0 所专用
404未找到Not Found服务器找不到请求的资源
404.1表示无法在所请求的端口上访问 Web 站点
404.2表示Web 服务扩展锁定策略阻止本请求
404.3表示MIME 映射策略阻止本请求
405方法禁用Method Not Allowed客户端请求行中使用的请求方法被服务器禁用
406不接受Not Acceptable服务端响应的资源类型与客户端请求头中要求的资源类型不符,客户端无法解析,简单来讲就是,服务器返回的数据客户端解析不了
407需要代理授权Proxy Authentication Required与 401 响应类似,只不过客户端必须在代理服务器上进行身份验证
408请求超时Request Time-out请求超时,服务器无法在规定时间内对客户端进行响应
409冲突Conflict由于客户端请求中要执行的操作与服务器中被请求资源的当前状态存在冲突,导致请求无法完成,通常发生在 PUT 请求中
410已删除Gone客户端请求的资源已经不存在,不同于 404,当资源以前有,但现在被永久删除的情况下可以使用 410 状态码
411需要有效长度Length Required服务器无法处理客户端发送的不带 Content-Length 的请求信息
412未满足前提条件Precondition Failed服务器在验证客户端请求头中的字段时,有一个或多个不能满足
413请求实体过大Request Entity Too Large客户端请求中,提交的数据大小超过了服务器允许的范围,服务器拒绝处理当前请求
414请求的 URI 过长Request-URI Too Large请求的 URI 长度超过了服务器能够处理的长度,因此服务器拒绝处理该请求
415不支持的媒体类型Unsupported Media Type服务器无法处理客户端请求中附带的媒体格式
416请求范围不符合要求Requested range not satisfiable如果请求中包含了 Range 头部字段,并且 Range 中指定的数据范围与当前资源的可用范围不符,同时请求中又没有定义 If-Range 头部字段,那么服务器就会返回 416 状态码
417未满足期望值Expectation Failed服务器无法满足请求头中 Expect 头部字段的信息
418我是一个茶壶I’m a teapot状态码 418 是 IETF 在 1998 年愚人节发布的一个玩笑 RFC
419认证超时Authentication Time-out并不是HTTP标注的一部分,419认证超时表示以前的有效证明已经失效了。同时也被用于401未认证的替代选择为了从其它被拒绝访问的已认证客户端中指定服务器的资源
420提高你的耐心Enhance Your CaimTwitter Search与Trends API在客户端被限速的情况下返回
421请求太多too many connections从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。通常,这里的IP地址指的是从服务器上看到的客户端地址(比如用户的网关或者代理服务器地址)。在这种情况下,连接数的计算可能涉及到不止一个终端用户。
422网络错误实体Unprocessable Entity请求格式正确,但是由于含有语义错误,所以服务器无法响应,一般是http headers有问题
423被锁定Locked当前资源被锁定
424依赖失败Failed Dependency由于之前的某个请求发生的错误,导致当前请求失败
425太早Too Early该请求可能会被“重放”,从而造成潜在的重放攻击,服务器不愿冒险,所以拒绝处理该请求
426需要升级Upgrade Required器拒绝使用当前协议执行请求,但可能在客户机升级到其他协议后愿意这样做。 服务器在 426 响应中发送 Upgrade 头以指示所需的协议议,客户端应当切换到TLS/1.0,并在HTTP/1.1 Upgrade header中给出
428需要前置条件

Precondition Required

原始服务器需要有条件的请求。当客户端GET一个资源的状态的时候,同时又PUT回给服务器,与此同时第三方修改状态到服务器上的时候,为了避免丢失更新的问题发生将会导致冲突
429过多请求

Too Many Requests

用户已经发送了太多的请求在指定的时间里。用于限制速率
431请求头部字段太大

Request Header Fields Too Large

服务器由于一个单独的请求头部字段或者是全部的字段太大而不愿意处理请求
444无响应Connection Closed Without Response被使用在Nginx的日志中表明服务器没有返回信息给客户端并且关闭了连接(在威慑恶意软件的时候比较有用)
449重试Retry With由微软扩展,代表请求应当在执行完某些操作后进行重试
450被Windows家长控制阻塞Blocked by Windows Parental Controls一个微软的扩展。这个错误是当Windows家长控制打开并且阻塞指定网页的访问的时候被指定
451由于法律原因而无效Unavailable For Legal Reasons被定义在因特网草稿“一个新的HTTP状态码用于法律限制的资源”。被用于当资源的访问由于法律原因被禁止的时候。例如检查制度或者是政府强制要求禁止访问。一个例子是1953年dystopian的小说Fahrenheit 451就是一个非法的资源
494请求头太大(Nginx)Request Header Too Large(Nginx)Nginx内置代码和431类似,但是是被更早地引入在版本0.9.4(在2011年1月21日)
495证书错误(Nginx)

Certificate Error(Nginx)

Nginx内置的代码,当使用SSL客户端证书的时候错误会出现为了在日志错误中区分它和4XX和一个错误页面的重定向
496没有证书(Nginx)No Certificate(Nginx)Nginx内置的代码,当客户端不能提供证书在日志中分辨4XX和一个错误页面的重定向
497HTTP到HTTPS(Nginx)http to https(Nginx)Nginx内置的代码,被用于原始的HTTP的请求发送给HTTPS端口去分辨4XX在日志中和一个错误页面的重定向
498令牌超时或失效(Esri)Token Required (Esri)由ArcGIS for Server返回。这个代码意味着令牌的超时或者是失效
499客户端主动关闭了连接client has closed connection由 nginx 引入的非标准状态代码,用于在 nginx 处理请求时客户端关闭连接的情况,因为服务器端处理的时间过长,客户端“不耐烦”了

5. 服务器错误:5xx

5xx 类型的状态码代表了服务器在处理请求的过程中出现错误或者发生异常(这些错误或异常是服务器本身造成的,与请求无关),也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理,此时服务器会在响应体中返回一个描述当前错误的解释信息,客户端会直接向用户展示这个响应体。5xx 类型的状态码适用于任何 HTTP 方法。

状态码中文名称英文名称描述
500服务器内部错误Internal Server Error服务器内部错误,无法完成请求
500.12表示应用程序正忙于在 Web 服务器上重新启动
500.13表示Web 服务器太忙
500.15表示不允许直接请求 Global.asa
500.16表示UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用
500.18表示URL 授权存储不能打开。这个错误代码为 IIS 6.0 所专用
500.100表示内部 ASP 错误
501尚未实施Not Implemented表示页眉值指定了未实现的配置,在参数中有语法错误
502错误网关Bad Gateway网关或者代理服务器在尝试执行请求时,从上游服务器接收到了一个无效的响应
503服务不可用Service Unavailable由于服务器维护或者过载,导致当前请求无法处理
504网关超时Gateway Time-out充当网关或代理服务器时,未能及时收到远程服务器的响应
505HTTP 版本不受支持HTTP Version not supported服务器不支持请求中 HTTP 协议的版本,无法完成处理
506变体也协商Variant Also Negotiates服务器存在内部配置错误:被请求的协商变元资源被配置为在透明内容协商中使用自己,,因此在一个协商处理中不是一个合适的重点
507存储不足Insufficient Storage表示服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918)
508发现环路Loop Detected服务器发现了一个无限的循环档处理请求的时候
509超过带宽限制Bandwidth Limit Exceeded服务器达到带宽限制
510未扩展Not Extended不能满足获取资源所需要的要求,还需要进一步扩展
511需要网络身份验证Network Authentication Required 客户端需要授权去火的网络的访问权限。一般用于代理交互中被用来进行网络的访问控制(例如连接WiFi热点时的强制网络门户)
520未知错误Unknown Error这个状态码也没有被指定在任何RFC中,并且只会被一些服务器返回,例如微软的Azure和CloudFlare服务器:”520错误。本质上是一个捕获全部的响应当原始服务器返回一些未知的或者一些不能被忍受或者被解释的(协议违反或者空响应)”
530表示未登录
532表示存储文件需要帐户
550表示未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)
551表示请求的操作异常终止:未知的页面类型
552表示请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)
553表示未执行请求的操作。不允许的文件名
598网络读取超时异常(未知)Nextwork ReadTimeout Exception (Unknown)这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络读取超时在一个客户端之前的代理的后面
599网络连接超时异常(未知)Nextwork Connect  Timeout Exception (Unknown)这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络连接超时在一个客户端之前的代理的后面

6. 服务器错误:6xx

状态码中文名称英文名称描述
600Unparseable Response Headers源站没有返回响应头部,只返回实体内容

相关文章:

  • Python爬虫之Scrapy框架系列(25)——分布式爬虫scrapy_redis完整实战【ZH小说爬取】
  • Web应急响应
  • typescript 实现RabbitMQ死信队列和延迟队列 订单10分钟未付归还库存
  • 【python】常用函数汇总(持续更新……)
  • loopvar 改动不同版本的影响-基础循环
  • 【Web】NSSCTF Round#20 Basic 个人wp
  • 将jupyter notebook文件导出为pdf(简单有效)
  • 7-294 筛法求素数(埃式筛、欧拉筛)
  • 信号处理--情绪分类数据集DEAP预处理(python版)
  • Redis基础命令集详解
  • C#(winform) 调用MATLAB函数
  • 【jenkins+cmake+svn管理c++项目】jenkins回传文件到svn(windows)
  • Django安装及第一个项目
  • 小白从0学习ctf(web安全)
  • Day53:WEB攻防-XSS跨站SVGPDFFlashMXSSUXSS配合上传文件添加脚本
  • 时间复杂度分析经典问题——最大子序列和
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • CSS 专业技巧
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • eclipse(luna)创建web工程
  • Java反射-动态类加载和重新加载
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 类orAPI - 收藏集 - 掘金
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 网络应用优化——时延与带宽
  • 正则表达式-基础知识Review
  • ​io --- 处理流的核心工具​
  • #{}和${}的区别是什么 -- java面试
  • #1015 : KMP算法
  • (6)添加vue-cookie
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (三)c52学习之旅-点亮LED灯
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .chm格式文件如何阅读
  • .Net Core与存储过程(一)
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net 发送邮件
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .net 验证控件和javaScript的冲突问题
  • .net连接oracle数据库
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .net中我喜欢的两种验证码
  • @FeignClient注解,fallback和fallbackFactory
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • []我的函数库
  • [Android Pro] AndroidX重构和映射
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [CF226E]Noble Knight's Path
  • [JavaScript]_[初级]_[关于forof或者for...of循环语句的用法]