IBM Cloud Docs
400 级错误的故障排除

400 级错误的故障排除

如果问题发生在客户端,可能是网络问题,则会出现4xx类错误代码响应。

  • 4xx代码可用作对任何请求方法的响应。
  • 除 HEAD 请求外,起源服务器应包含一个解释,该解释应由 User-Agent 显示。
  • 如果网站所有者创建了具有“块”操作的规则并配置了自定义响应代码,则自定义规则可以在 HTML 页面中返回 400-499 范围内的任何响应代码。

错误 400:错误请求

客户端没有向服务器发送正确的请求。 这是客户端错误,如请求语法不规范、请求无效、信息成帧或欺骗性请求路由。 例如,如果请求中包含的特殊字符未正确 URL 编码(或百分比编码),则返回 HTTP 400 错误。

如果您在使用 CIS API时收到 HTTP 错误,请确保您使用了正确的语法、正确的参数以及正确的API调用正文。

错误 401:未授权

请求发送时没有正确的身份验证凭证。

错误 403:禁止

如果您看到的 403 错误没有CIS烙印,这总是直接从原始网络服务器返回,而不是CIS,一般与服务器上的权限规则有关。 出现这种错误的主要原因是

  • 您在源网络服务器上设置的权限规则(例如在Apache.htaccess 中设置的权限规则)
  • 模块安全规则
  • IP 拒绝规则。 确保CIS的 IP 范围未被屏蔽。

CIS 如果请求违反了默认 WAF 管理规则或为该特定区域启用的 WAF 管理规则,则将提供 403 响应。

决议 如果您看到403响应,且响应正文中包含 CIS 品牌,这是 HTTP 响应代码,与安全功能一起返回:

  • WAF自定义或托管规则,具有挑战或阻止操作
  • 默认设置为中等的安全级别
  • 大多数1xxx CIS错误代码
  • 浏览器完整性检查

错误 404:未找到

源服务器无法或不愿找到所请求的资源。 这通常意味着主机服务器找不到资源。 要提供更永久的错误版本,请使用 "410 错误代码。

这些错误通常发生在以下情况:有人误将您的网站上的 URL 打成其他内容;其他页面的链接断开;之前存在的页面被移动或删除;搜索引擎索引您的网站时出错。 对于一个典型的网站来说,这些错误约占页面总浏览量的 3%,但传统的分析平台往往无法跟踪这些错误。

网站所有者通常会设置一个自定义页面,以便在出现该错误时提供服务。

对于客户网站,[决议]"{: tag-green}"CIS不会产生 "404 错误。CIS仅代理来自源服务器的请求。 当您看到您的网站出现 "404 时,请联系您的托管服务提供商寻求帮助。

错误 405:方法不允许

源服务器知道所请求的资源,但不支持该请求方法。

解析源服务器还必须提供一个 Allow 标头,其中包含该资源支持的目标列表。

错误 406:不可接受

服务器无法生成与请求的内容协商标头中定义的可接受值列表相匹配的响应,而且服务器不愿意提供默认表示。

[解决]方法{: tag-green},而不是产生此错误,您可以向 User-Agent 提供不太受欢迎的方法。

错误 407:需要验证

客户端未随请求发送所需的身份验证。

解决方法通过必要的身份验证重试请求。

错误 408:请求超时

源服务器未在合理时间内收到完整请求。 该错误意味着服务器不想等待并继续连接。

解决方法这种错误并不常见,因为服务器通常使用“关闭”连接选项。

错误 409:冲突

由于与资源的当前状态冲突,请求未完成。 此错误通常发生在多个客户端试图编辑同一资源的 "PUT 请求中。

解决方法服务器生成的有效负载应包含足够的信息,以便客户端识别冲突源。 客户可以也应该再次尝试请求。

CIS为“Error 1001: DNS Resolution Error 生成并提供”409 响应。

错误 410:消失

请求的资源在原点永久丢失。

解决方法服务器建议删除引用资源的链接。 服务器不具备使用此状态代码代替 "404 响应的资格,也不需要在任何特定时间内使用此响应。

错误 411:需要长度

客户端未在标头中定义请求正文的 Content-Length,因此需要使用该参数来获取资源。

解决方法客户端可以在添加标头字段后重新发送请求。

错误 412:前提条件失败

服务器拒绝请求,因为资源不符合客户端指定的条件。

以版本控制为例,客户修改现有资源时,会将 "If-Unmodified-Since 标头设置为与客户下载资源并开始编辑的日期一致。 如果资源在此日期之后、编辑上传之前被编辑过(可能是由其他客户编辑的),则会生成此响应,因为最后一次编辑的日期在客户在 "If-Unmodified-Since 中设置的日期之后。

[决议]"{: tag-green}"CIS将提供此响应。

错误 413:有效载荷过大

服务器拒绝处理请求,因为客户端发送的有效载荷大于服务器可接受的范围。 服务器可以关闭连接。

如果这种拒绝只是暂时的,那么服务器就应该发送一个 "Retry-After 标头,说明客户端应在何时再次尝试请求。

CIS的上传限制取决于您的计划。 如果超过此限制,您的 API 调用将收到 "413 Request Entity Too Large 错误。

| 标准|企业 |-|--------|----------| |可用性|是|是|是 |最大上传size|200 MB|500MB

解决方法如果您需要更大的上传量,请将请求分解成较小的块,将 DNS 记录更改为仅 DNS,或升级您的计划。

错误 414:URI 太长

服务器因 URI 太长而拒绝处理。 例如,如果客户端在 POST 之后尝试使用异常长的 URI 发出“GET 请求,这就会被视为安全风险,并生成”414 错误。

决议 CIS will generate this response for a URI longer than 32KB.

错误 415:不支持介质类型

服务器拒绝处理当前有效负载的格式。 识别和修复这一问题的方法之一是查看客户端请求中发送的“Content-Type 或”Content-Encoding 头。

错误 416:范围不可满足

416 错误响应代码表示服务器无法提供所请求的范围。 例如:

  • HTTP/1.1 416 Range Not Satisfiable
  • Content-Range: bytes */12777

解决方法出现 "416 错误的最常见原因是文件不包含此类范围。 浏览器通常会再次请求整个文件或中止操作。

错误 417:预期失败

服务器未能满足客户请求中 "Expect 标头指定的要求。

错误 429:请求过多

根据服务器(通常称为 "速率限制"),客户端在指定时间内发送了太多请求。 服务器可能会回复信息,允许请求者在特定时间后重试请求。

CIS应用程序接口的全局速率限制为每个用户每 5 分钟 1200 次请求,无论请求是通过仪表板、应用程序接口密钥还是应用程序接口令牌提出的,均累计适用。 如果超过此限制,接下来五分钟内的所有 API 调用都会被阻止,并收到 "HTTP 429 的响应。

一些特定的API调用有其自身的限制,并单独记录,例如缓存清除API、GraphQL API和规则集API。

解决方法企业客户可联系支持部门提高限额。

当请求受到速率限制时,CIS会生成并发送此状态代码。 如果网站访客收到这些错误代码,您可以在“速率限制分析”中看到。

错误 451:由于法律原因无法使用

由于法律诉讼,服务器无法交付资源。

通常受此响应代码影响的是搜索引擎和 ISP,而不是源服务器。 答复应在答复正文中做出解释,并详细说明法律要求。

错误 499:客户端关闭请求

错误代码 "499 是nginx特有的响应代码,用于表示当服务器仍在处理请求时,客户端已关闭连接,导致服务器无法发送状态代码。

企业客户的CIS日志和状态代码分析中会显示此错误。

由于 CIS 合作伙伴Cloudflare基于nginx构建,因此Cloudflare的连接日志和分析中存在499个 HTTP 代码,这些代码在 CIS 处理请求完成之前就被终止了。 当客户关闭连接时,在日志中看到这些信息是意料之中的。

为了提供更多信息,在任何高级协议开始“对话”之前,CIS和网站的源服务器之间必须建立 TCP 连接。 为了建立连接,TCP 使用三方握手:

  1. SYN:CIS向源服务器发送三个 SYN 数据包。
  2. SYN+ACK:作为回应,源服务器会回复一个 SYN+ACK。
  3. ACK:最后,CIS会向原服务器发送 ACK。

此时,CIS和源服务器都已收到连接确认,通信已建立。 但是,如果源服务器在 15 秒内没有向“CIS发回 SYN+ACK,”CIS就会重试一次。

根据客户端超时值的不同,可能会出现三种不同的情况,并生成各自的状态代码。

  • 如果客户端的超时时间较短(少于 30 秒),则会放弃连接,CIS会记录 "499 错误。
  • 如果客户设置了更长的超时时间(超过30秒),则在TCP连接建立后,HTTP 事务将继续。 在这种情况下,CIS 会返回正常的状态代码 HTTP 200
  • 如果客户端超时较多,且CIS无法与源服务器建立 TCP 握手,则CIS会返回 "HTTP 522