谷歌建议使用500, 503, 429进行速率限制(附11类https状态码列表大全)
2023年2月谷歌更新发布说明:当你需要限制客户端请求某个服务的数量,也就是限制Googlebot请求速度时,谷歌建议网站所有者和一些内容分发网络 (CDN)使用500, 503, 429进行速率限制不要使用 403或404来尝试降低Googlebot的抓取速度。403, 404, 410, 418提示为客服端错误,而非服务器错误,而只有429是提示服务器错误,告知googlebot服务器超载了需要降低下抓取速度。
HTTP(HyperText Transfer Protocol )状态码解释:
-
501 (尚未实施): 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
-
503 (服务不可用): 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
-
403 (禁止):服务器拒绝请求。
-
404 (未找到):服务器找不到请求的网页。
-
410(已删除) : 如果请求的资源已永久删除,服务器就会返回此响应。
-
418:当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个418错误状态码,表示“我是一个茶壶”。
-
429 (太多请求): 当你需要限制客户端请求某个服务的数量,也就是限制请求速度时,该状态码就会非常有用
当Googlebot抓取速度过快时,可以使用下面两个方法降低谷歌的抓取速度:
1.使用 Search Console 暂时降低抓取速度, 谷歌需要几天时间反应过来。
2.当 Googlebot 抓取速度过快时, 将500、503或429HTTP 状态代码返回给它。当 Googlebot 遇到大量带有500、503或429 HTTP响应状态代码的网址时(例如,如果您 禁用了您的网站),它会降低您网站的抓取速度。
11类HTT状态码(HTTP Status Code)列表大全:
-
1xxs – 信息响应:请求已收到,请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
-
2xxs - 请求被成功接收、理解和接受, 请求已成功完成,服务器向浏览器提供了预期的响应。
-
3xxs – 重定向:您被重定向到其他地方。已收到请求,但存在某种重定向。
-
4xxs – 客户端错误:找不到页面。请求包含错误语法或无法完成,无法访问网站或页面。
-
5xxs – 服务器错误:失败。客户端发出了有效请求,但服务器无法完成明显有效的请求。
一、1xx 信息响应
表示临时响应并需要请求者继续执行操作的状态代码。
-
100 - 继续,服务器已收到请求标头,客户端应继续发送请求正文(在需要发送正文的请求的情况下;例如,POST 请求)。
-
101 - 交换协议,请求者已要求服务器切换协议并且服务器已同意这样做。
-
102 - 处理(WebDAV;RFC 2518),一个WebDAV请求可能包含很多涉及文件操作的子请求,需要很长时间才能完成请求。(此状态代码已弃用)
-
103 - 早期提示 (RFC 8297) ,用于在最终 HTTP 消息之前返回一些响应标头。
二、2xx 成功
此类状态代码表示客户端请求的操作已被接收、理解和接受。
-
200 - 好,成功 HTTP 请求的标准响应。
-
201- 创建,请求已完成,导致创建新资源
-
202- 已接受,已接受请求进行处理,但处理尚未完成。该请求最终可能会或可能不会被执行,并且在处理发生时可能会被拒绝。
-
203- 非权威信息(自 HTTP/1.1 起),服务器是一个转换代理(例如Web 加速器),它从其来源接收到 200 OK,但返回来源响应的修改版本。
-
204- 无内容,服务器成功处理了请求,没有返回任何内容。
-
205-重置内容,服务器成功处理了请求,要求请求者重置其文档视图,并且不返回任何内容。
-
206- 部分内容,由于客户端发送的范围标头,服务器仅提供部分资源(字节服务)。HTTP 客户端使用范围标头来恢复中断的下载,或将下载拆分为多个同步流。
-
207- 多状态(WebDAV;RFC 4918),- 紧随其后的消息体默认是一个XML消息,并且可以包含许多单独的响应代码。
-
208- 已报告(WebDAV;RFC 5842),DAV 绑定的成员已在(多状态)响应的前面部分中被枚举,并且不再被包括在内。
-
226 - IM 使用 (RFC 3229),服务器已完成对资源的请求,并且响应表示应用于当前实例的一个或多个实例操作的结果。
三、3xx 重定向
此类状态代码表示客户端必须采取其他操作才能完成请求。其中许多状态代码用于URL 重定向。
300 - 多项选择,指示客户端可以从中选择的资源的多个选项。例如,此代码可用于呈现多个视频格式选项、列出具有不同文件扩展名的文件。
301- 永久移动,这个请求和所有未来的请求都应该指向给定的URI。
302- 暂时移动,告诉客户端查看(浏览)另一个 URL。
303- 查看其他(自 HTTP/1.1 起),可以使用 GET 方法在另一个URI下找到对请求的响应。
304- 未修改,指示资源自请求标头If-Modified-Since 或 If-None-Match指定的版本以来未被修改。
305- 使用代理(自 HTTP/1.1 起),请求的资源只能通过代理使用,其地址在响应中提供。(出于安全原因,许多 HTTP 客户端(例如Mozilla Firefox和Internet Explorer)不遵守此状态代码。)
306- 切换代理,不再使用。最初的意思是“后续请求应该使用指定的代理”。
307- 临时重定向(自 HTTP/1.1 起),在这种情况下,应该使用另一个 URI 重复请求;但是,未来的请求仍应使用原始 URI。与历史上 302 的实现方式不同,重新发出原始请求时不允许更改请求方法。例如,应使用另一个 POST 请求重复 POST 请求。
308-永久重定向,这个请求和所有未来的请求都应该指向给定的URI。308 与 301 的行为相似,但不允许更改 HTTP 方法。
四、4xx 客户端错误
此类状态代码适用于似乎是由客户端引起的错误情况。除了响应 HEAD 请求时,服务器应该包含一个实体,其中包含对错误情况的解释,以及它是临时的还是永久的。这些状态代码适用于任何请求方法。用户代理应该向用户显示任何包含的实体。
400- 错误请求,服务器不理解请求的语法。例如,格式错误的请求语法、大小太大、无效的请求消息框架或欺骗性请求路由,服务器不能或不会处理该请求。
401-未授权,请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
响应必须包含一个 WWW-Authenticate 头字段,其中包含适用于所请求资源的质询。请参阅基本访问身份验证和摘要访问身份验证。
当网站禁止IP 地址(通常是网站域)并且该特定地址被拒绝访问网站时,某些网站会错误地发出 HTTP 401。
402- 需要付款,保留以供将来使用。最初的意图是此代码可能用作某种形式的数字现金或小额支付方案的一部分,例如GNU Taler 所提议的,但这尚未发生,并且此代码未被广泛使用。
如果特定开发人员超过每日请求限制,Google Developers API 将使用此状态。
如果帐户没有足够的资金来发起呼叫,Sipgate将使用此代码。
Shopify在商店未支付费用并暂时停用时使用此代码。
条纹将此代码用于参数正确的失败付款,例如阻止欺诈性付款。
403- 禁止访问,该请求包含有效数据并被服务器理解,但服务器拒绝执行操作。
可能是由于用户没有资源的必要权限或需要某种帐户,或试图执行禁止的操作(例如,在只允许一个记录的情况下创建重复记录)。如果请求通过回答 WWW-Authenticate 标头字段质询来提供身份验证,但服务器不接受该身份验证,则通常也会使用此代码。
404- 未找到,找不到请求的资源,但将来可能可用。客户的后续请求是允许的。
405- 方法不允许,请求的资源不支持请求方法;例如,对需要通过POST呈现数据的表单的 GET 请求,或对只读资源的 PUT 请求。
406- 不可接受,根据请求中发送的 Accept 标头,请求的资源只能生成不可接受的内容。请参阅内容协商。
407- 需要代理身份验证,客户端必须首先向代理验证自己。
408-请求超时,服务器等待请求超时。根据 HTTP 规范:“客户端在服务器准备等待的时间内没有产生请求。客户端可以在以后的任何时间不加修改地重复请求。”
409- 冲突,表示由于资源的当前状态存在冲突而无法处理请求,例如多个同时更新之间的编辑冲突。
410- 没了,表示请求的资源以前在使用中,但不再可用,也不会再次可用。当有意删除资源并应清除资源时,应使用此方法。收到 410 状态代码后,客户端以后不应再请求该资源。搜索引擎等客户端应从其索引中删除该资源。大多数用例不需要客户端和搜索引擎清除资源,而是可以使用“404 Not Found”。
411- 长度要求,请求没有指定其内容的长度,这是请求的资源所要求的。
412- 前置条件失败,服务器不满足请求者在请求标头字段中设置的先决条件之一。
413- 负载太大,请求大于服务器愿意或能够处理的。以前在 RFC 2616 中称为“请求实体太大”。[19]
414- URI 太长,提供的URI太长,服务器无法处理。通常是将太多数据编码为 GET 请求的查询字符串的结果,在这种情况下,应将其转换为 POST 请求。
415- 不支持的媒体类型,请求实体具有服务器或资源不支持的媒体类型。例如,客户端上传图像为image/svg+xml,但服务器要求图像使用不同的格式。
416- 范围不可满足,客户端已请求文件的一部分(字节服务),但服务器无法提供该部分。例如,如果客户端请求文件超出文件末尾的部分。在 RFC 2616 之前称为“无法满足的请求范围”。
417- 期待失败,服务器无法满足 Expect 请求头字段的要求。
418- 我是茶壶(RFC 2324、RFC 7168),当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个418错误状态码,表示“我是一个茶壶”。
这段代码在 1998 年被定义为传统的IETF 愚人节笑话之一,在 RFC 2324,超文本咖啡壶控制协议中,预计不会被实际的 HTTP 服务器实现。RFC 指定此代码应由请求冲泡咖啡的茶壶返回。
此 HTTP 状态在某些网站中用作复活节彩蛋,例如Google.com 的“我是茶壶”复活节彩蛋。有时,此状态代码也用作对被阻止请求的响应,而不是更合适的 403 Forbidden。
421- 错误的请求,请求指向无法产生响应的服务器(例如,由于连接重用)。
422- 不可处理的实体,该请求格式正确,但由于语义错误而无法执行。
423- 锁定(WebDAV;RFC 4918),正在访问的资源已锁定。
424 - 依赖失败(WebDAV;RFC 4918),请求失败,因为它依赖于另一个请求,而那个请求失败了(例如,一个 PROPPATCH)。
425- 太早 (RFC 8470),表示服务器不愿意冒险处理可能被重播的请求。
426 - 需要升级,客户端应切换到升级标头字段中给出的不同协议,例如TLS/1.3。
428- 需要先决条件 (RFC 6585),源服务器要求请求是有条件的。旨在防止“丢失更新”问题,客户端获取资源的状态,修改它,并将其返回给服务器,同时第三方修改了服务器上的状态,导致冲突。
429- 请求过多 (RFC 6585),用户在给定时间内发送了太多请求。旨在与速率限制方案一起使用。当你需要限制客户端请求某个服务的数量,也就是限制请求速度时,该状态码就会非常有用。
431- 请求标头字段太大 (RFC 6585),服务器不愿意处理请求,因为单个标头字段或所有标头字段共同太大。[29]
451- 因法律原因不可用(RFC 7725),服务器操作员已收到拒绝访问资源或包含所请求资源的一组资源的合法请求。
五、5xx 服务器错误
服务器未能完成请求。这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
以数字“5”开头的响应状态代码表示服务器知道它遇到错误或无法执行请求的情况。除了在响应 HEAD 请求时,服务器应该包含一个包含错误情况解释的实体,并指出它是临时的还是永久的。同样,用户代理应该向用户显示任何包含的实体。这些响应代码适用于任何请求方法。
500-内部服务器错误,一般错误消息,在遇到意外情况且没有更具体的消息适用时给出。
501- 未实现,服务器要么无法识别请求方法,要么无法完成请求。通常这意味着未来的可用性(例如,网络服务 API 的新功能)。
501-错误的网关,服务器充当网关或代理,并从上游服务器收到无效响应。
502-服务不可用,服务器无法处理请求(因为它超载或停机维护)。通常,这是一个临时状态。
503-网关超时,服务器充当网关或代理,没有收到来自上游服务器的及时响应。
505- 不支持 HTTP 版本,服务器不支持请求中使用的 HTTP 版本。
506- 变体也协商 (RFC 2295),请求的透明内容协商导致循环引用。
507- 存储空间不足(WebDAV;RFC 4918),服务器无法存储完成请求所需的表示。
检测到 508 循环(WebDAV;RFC 5842),服务器在处理请求时检测到无限循环(发送而不是208 Already Reported)。
510- 未扩展 (RFC 2774),服务器需要对请求进行进一步扩展才能实现它。
需要 511 网络身份验证 (RFC 6585)
客户端需要进行身份验证才能获得网络访问权限。旨在通过拦截用于控制网络访问的代理来使用(例如,“强制门户”过去需要在通过Wi-Fi 热点授予完全互联网访问权限之前需要同意服务条款)。
六、非官方代码
以下代码未由任何标准指定。
419- 页面已过期(Laravel 框架)
当 CSRF 令牌丢失或过期时,由 Laravel 框架使用。
420- 方法失败(Spring 框架)
当方法失败时,Spring Framework 使用的已弃用响应。
430- 请求标头字段太大 ( Shopify )
当在特定时间范围内请求过多 URL 时,由Shopify使用,而不是429 Too Many Requests响应代码。
450- 被Windows 家长控制阻止 (Microsoft)
当 Windows 家长控制打开并阻止访问所请求的网页时指示的 Microsoft 扩展代码。
498- 无效令牌 (Esri)
由ArcGIS for Server返回。代码 498 表示令牌已过期或无效。
499- 需要令牌 (Esri)
由ArcGIS for Server返回。代码 499 表示需要令牌但未提交。
509 - 超出带宽限制(Apache Web 服务器/ cPanel)
服务器已超过服务器管理员指定的带宽;这通常被共享托管服务提供商用来限制客户的带宽。
529- 站点超载
由Qualys在 SSLLabs 服务器测试 API 中使用,以发出站点无法处理请求的信号。
530- 站点被冻结
由Pantheon Systems网络平台使用以指示因不活动而被冻结的站点。
598 -(非正式约定)网络读取超时错误
一些 HTTP 代理使用它来向代理前面的客户端发送代理后面的网络读取超时信号。
599 -网络连接超时错误
某些 HTTP 代理使用的错误,用于向代理前面的客户端发出代理后面的网络连接超时信号。
七、互联网信息服务
Microsoft 的Internet Information Services (IIS) Web 服务器扩展了 4xx 错误空间以指示客户端请求的错误。
440-登录超时,客户端会话已过期,必须重新登录。
449- 重试,服务器无法接受请求,因为用户没有提供所需的信息。
451-重定向,当有更高效的服务器可用或服务器无法访问用户邮箱时,在Exchange ActiveSync中使用。客户端应重新运行 HTTP 自动发现操作以找到更合适的服务器。
IIS 有时会使用额外的十进制子代码来获取更具体的信息,然而这些子代码仅出现在响应负载和文档中,而不是实际的 HTTP 状态代码。
八、Nginx
Nginx网络服务器软件扩展了 4xx 错误空间以指示客户端请求的问题。
444- 无响应,在内部使用指示服务器不向客户端返回任何信息并立即关闭连接。
494- 请求标头太大,客户端发送的请求太大或标题行太长。
495- SSL证书错误
400- Bad Request响应代码的扩展,在客户端提供了无效的客户端证书时使用。可能是无效的请求消息框架,欺骗性的错误,或由于错误键入的 URL、格式错误的语法或包含非法字符的 URL 而发生的。这是非常容易出错的,如果 URL 编码不正确,就会发生这种情况
496- 需要 SSL 证书
497-HTTP 请求发送到 HTTPS 端口
499- 客户端关闭请求,当客户端在服务器可以发送响应之前关闭请求时使用。
九、Cloudflare
Cloudflare的反向代理服务扩展了 5xx 系列错误空间,以指示源服务器的问题。
520- Web服务器返回未知错误,源服务器向 Cloudflare 返回了空的、未知的或意外的响应。[52]
521- Web 服务器已关闭,源服务器拒绝来自 Cloudflare 的连接。源头的安全解决方案可能会阻止来自某些 Cloudflare IP 地址的合法连接。
522 -连接超时,Cloudflare 连接源服务器超时,Cloudflare 无法连接到原始服务器;例如,如果源服务器的DNS 记录不正确或丢失。
524 - 发生超时,Cloudflare 能够完成与源服务器的 TCP 连接,但没有及时收到 HTTP 响应。
525 - SSL 握手失败,Cloudflare 无法与源服务器协商SSL/TLS 握手。
526- 无效的 SSL 证书,Cloudflare 无法验证源 Web 服务器上的 SSL 证书。也被Cloud Foundry的 gorouter 使用。
527- 轨道炮错误,错误 527 表示 Cloudflare 与源服务器的 Railgun 服务器之间的连接中断。
530-返回错误,530 和 1xxx 错误。
十、AWS 弹性负载均衡器
Amazon的Elastic Load Balancing添加了一些自定义返回码
460-在空闲超时期限结束之前,客户端关闭了与负载平衡器的连接。通常当客户端超时时间早于 Elastic Load Balancer 的超时时间时。
463-负载均衡器收到一个包含 30 多个 IP 地址的 X-Forwarded-For 请求标头。
561- 未经授权,注册到负载均衡器的服务器返回的身份验证错误。您配置了侦听器规则来对用户进行身份验证,但身份提供者 (IdP) 在对用户进行身份验证时返回了错误代码。
十一、缓存警告代码(已废弃)
以下缓存相关警告代码在RFC 7234中指定。与上面的其他状态代码不同,这些代码不是作为 HTTP 协议中的响应状态发送的,而是作为“警告”HTTP 标头的一部分发送的。
由于此“警告”标头通常既不会由服务器发送,也不会被客户端确认,因此 HTTP 工作组在 2022 年通过RFC 9111废弃了此标头及其代码。
110 - 响应过时,缓存提供的响应是陈旧的(内容的年龄超过了 Cache-Control 标头或启发式选择的生命周期设置的最大年龄)。
111- 重新验证失败,由于无法到达原始服务器,缓存无法验证响应。
112- 断开操作,缓存有意与网络的其余部分断开连接。
113- 启发式过期,缓存试探性地选择了大于 24 小时的新鲜度生命周期并且响应的年龄大于 24 小时。
199- 杂项警告,任意的、非特定的警告。警告文本可以被记录或呈现给用户。
214- 改造应用,如果代理对表示应用任何转换,例如更改内容编码、媒体类型等,则由代理添加。
本篇文章来源于微信公众号: 喃姐SEO日志