IIS 7.0 及更高版本中的 HTTP 状态代码

本文提供 Microsoft Internet Information Services (IIS (7.0 及更高版本中的超文本传输协议) HTTP) 状态代码的列表。

原始产品版本:  Internet Information Services 7.0 及更高版本
原始 KB 编号:   943891

简介

当您尝试使用 HTTP 协议访问运行 (IIS) 7.0、7.5 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代码。 HTTP 状态代码记录在 IIS 日志中。 此外,HTTP 状态代码可能显示在客户端浏览器中。

HTTP 状态代码可能指示请求是成功还是失败。 HTTP 状态代码也可能显示请求失败的确切原因。

本文供支持代理和 IT 专业人员使用。 如果要查找有关网站错误消息的详细信息,请参阅获取有关网站错误消息的帮助, (HTTP 错误) 。

日志文件位置

默认情况下,IIS 7.0 和更高版本将日志文件放入以下文件夹中:
inetpub\logs\Logfiles

此文件夹包含每个万维网网站的单独目录。 默认情况下,日志文件每天在目录中创建一次,并且使用日期命名日志文件。 例如,日志文件可能命名为 exYYMMDD.log

HTTP 状态代码

本节介绍 IIS 7.0 和更高版本使用的 HTTP 状态代码。

备注

本文未列出 HTTP 规范中规定的每一个可能的 HTTP 状态代码。 本文仅包括 IIS 7.0 和更高版本可以发送的 HTTP 状态代码。 例如,ISAPI 筛选器 (Internet Server API) 自定义 HTTP 模块可以设置自己的 HTTP 状态代码。

1 xx - 信息

这些 HTTP 状态代码指示临时响应。 客户端计算机收到一个或多个 1 xx 响应,然后客户端计算机才收到常规响应。

IIS 7.0 及更高版本使用以下信息性 HTTP 状态代码:

  • 100 - 继续。
  • 101 - 切换协议。

2 xx - 成功

这些 HTTP 状态代码指示服务器已成功接受请求。

IIS 7.0 及更高版本使用以下成功 HTTP 状态代码:

  • 200 - 正常。 客户端请求已成功。
  • 201 - 已创建。
  • 202 - 接受。
  • 203 - 非授权信息。
  • 204 - 无内容。
  • 205 - 重置内容。
  • 206 - 部分内容。

3 xx - 重定向

这些 HTTP 状态代码指示客户端浏览器必须执行更多操作以满足请求。 例如,客户端浏览器可能必须请求服务器上不同的页面。 或者,客户端浏览器可能必须通过使用代理服务器重复请求。

IIS 7.0 及更高版本使用以下重定向 HTTP 状态代码:

  • 301 - 永久移动。
  • 302 - 对象已移动。
  • 304 - 未修改。
  • 307 - 临时重定向。

4 xx - 客户端错误

这些 HTTP 状态代码指示发生了错误,并且客户端浏览器似乎出错。 例如,客户端浏览器可能请求了不存在的页面。 或者,客户端浏览器可能未提供有效的身份验证信息。

IIS 7.0 及更高版本使用以下客户端错误 HTTP 状态代码:

  • 400 - 请求错误。 服务器无法理解该请求,因为语法格式不正确。 客户端不应在不进行修改的情况下重复请求。

    IIS 7.0 及更高版本定义以下 HTTP 状态代码,这些代码指示错误 400 的更具体原因:

    • 400.1 - 无效的目标标头。
    • 400.2 - 深度标头无效。
    • 400.3 - 如果标头无效。
    • 400.4 - 覆盖标头无效。
    • 400.5 - 翻译标头无效。
    • 400.6 - 请求正文无效。
    • 400.7 - 内容长度无效。
    • 400.8 - 无效超时。
    • 400.9 - 锁定令牌无效。
  • 401 - 拒绝访问。

    IIS 7.0 及更高版本定义了几个 HTTP 状态代码,这些代码指示错误 401 的更具体原因。 以下特定的 HTTP 状态代码显示在客户端浏览器中,但不显示在 IIS 日志中:

    • 401.1 - 登录失败。
    • 401.2 - 由于服务器配置,登录失败。
    • 401.3 - 由于资源上的 ACL 而未经授权。
    • 401.4 - 筛选器授权失败。
    • 401.5 - ISAPI/CGI 应用程序授权失败。
    • 401.501 - 访问被拒绝:来自同一客户端 IP 的请求过多;动态 IP 限制 达到并发请求速率限制。
    • 401.502 - 禁止:来自同一客户端 IP 的请求过多;动态 IP 限制 已达到最大请求速率限制。
    • 401.503 - 拒绝访问:IP 地址包含在 IP 限制的拒绝列表中
    • 401.504 - 访问被拒绝:主机名包含在 IP 限制的拒绝列表中
  • 403 - 禁止。

    IIS 7.0 及更高版本定义以下 HTTP 状态代码,这些代码指示错误 403 的更具体原因:

    • 403.1 - 禁止访问。
    • 403.2 - 禁止读取访问。
    • 403.3 - 禁止写入访问。
    • 403.4 - 需要 SSL。
    • 403.5 - 需要 SSL 128。
    • 403.6 - IP 地址被拒绝。
    • 403.7 - 需要客户端证书。
    • 403.8 - 网站访问被拒绝。
    • 403.9 - 禁止:尝试连接到 Web 服务器的客户端过多。
    • 403.10 - 禁止:Web 服务器配置为拒绝执行访问。
    • 403.11 - 禁止:密码已更改。
    • 403.12 - 映射器拒绝访问。
    • 403.13 - 已吊销客户端证书。
    • 403.14 - 目录列表被拒绝。
    • 403.15 - 禁止:客户端访问许可证已超出对 Web 服务器的限制。
    • 403.16 - 客户端证书不受信任或无效。
    • 403.17 - 客户端证书已过期或无效。
    • 403.18 - 无法在当前网站中执行应用程序池。
    • 403.19 - 无法在此客户端中执行客户端的 CGI 应用程序池。
    • 403.20 - 禁止:Passport 登录失败。
    • 403.21 - 禁止:拒绝源访问。
    • 403.22 - 禁止:无限深度被拒绝。
    • 403.501 - 禁止:来自同一客户端 IP 的请求过多;动态 IP 限制 达到并发请求速率限制。
    • 403.502 - 禁止:来自同一客户端 IP 的请求过多;动态 IP 限制 已达到最大请求速率限制。
    • 403.503 - 禁止:IP 地址包含在 IP 限制的拒绝列表中
    • 403.504 - 禁止:主机名包含在 IP 限制的拒绝列表中
  • 404 - 未找到。

    IIS 7.0 及更高版本定义以下 HTTP 状态代码,这些代码指示错误 404 的更具体原因:

    • 404.0 - 未找到。

    • 404.1 - 未找到网站。

    • 404.2 - ISAPI 或 CGI 限制。

    • 404.3 - 多用途 Internet 邮件扩展 (MIME) 类型限制。

    • 404.4 - 未配置处理程序。

    • 404.5 - 请求筛选配置拒绝。

    • 404.6 - 拒绝动词。

    • 404.7 - 文件扩展名被拒绝。

    • 404.8 - 隐藏命名空间。

    • 404.9 - 文件属性已隐藏。

    • 404.10 - 请求标头太长。

    • 404.11 - 请求包含双转义序列。

    • 404.12 - 请求包含高位字符。

    • 404.13 - 内容长度过大。

    • 404.14 - 请求 URL 太长。

    • 404.15 - 查询字符串太长。

    • 404.16 - 发送到静态文件处理程序的 DAV 请求。

    • 404.17 - 通过通配符 MIME 映射映射到静态文件处理程序的动态内容。

    • 404.18 - 查询字符串序列被拒绝。

    • 404.19 - 筛选规则拒绝。

    • 404.20 - URL 分段过多

    • 404.501 - 未找到:来自同一客户端 IP 的请求过多;动态 IP 限制 达到并发请求速率限制。

    • 404.502 - 未找到:来自同一客户端 IP 的请求过多;动态 IP 限制 已达到最大请求速率限制。

    • 404.503 - 未找到:IP 地址包含在 IP 限制的拒绝列表中

    • 404.504 - 未找到:主机名包含在 IP 限制的拒绝列表中

    • 405 - 不允许使用方法。

    • 406 - 客户端浏览器不接受所请求页面的 MIME 类型。

    • 408 - 请求已过。

    • 412 - 先决条件失败。

5 xx - 服务器错误

这些 HTTP 状态代码指示服务器无法完成请求,因为服务器遇到错误。

IIS 和更高版本使用以下服务器错误 HTTP 状态代码:

  • 500 - 内部服务器错误。

    IIS 7.0 及更高版本定义以下 HTTP 状态代码,这些代码指示错误 500 的更具体原因:

    • 500.0 - 模块或 ISAPI 错误发生。

    • 500.11 - 应用程序正在 Web 服务器上关闭。

    • 500.12 - 应用程序正忙于在 Web 服务器上重新启动。

    • 500.13 - Web 服务器太忙。

    • 500.15 - 不允许对 Global.asax 直接请求。

    • 500.19 - 配置数据无效。

    • 500.21 - 无法识别模块。

    • 500.22 - ASP.NET httpModules 管道模式下不适用配置。

    • 500.23 - ASP.NET httpHandlers 管道模式下不适用配置。

    • 500.24 - ASP.NET 管道模式下不适用模拟配置。

    • 500.50 - 通知处理期间发生重写 RQ_BEGIN_REQUEST 错误。 出现配置或入站规则执行错误。

      备注

      下面是读取入站和出站规则的分布式规则配置的地方。

    • 500.51 - 在通知处理期间GL_PRE_BEGIN_REQUEST重写错误。 发生全局配置或全局规则执行错误。

      备注

      下面是读取全局规则配置的地方。

    • 500.52 - 通知处理期间发生重写 RQ_SEND_RESPONSE 错误。 发生出站规则执行。

    • 500.53 - 通知处理期间发生重写 RQ_RELEASE_REQUEST_STATE 错误。 出站规则执行错误发生。 规则配置为在更新输出用户缓存之前执行。

    • 500.100 - 内部 ASP 错误。

  • 501 - 标头值指定未实现的配置。

  • 502 - Web 服务器在充当网关或代理时收到无效响应。

    IIS 7.0 及更高版本定义以下 HTTP 状态代码,这些代码指示错误 502 的更具体原因:

    • 502.1 - CGI 应用程序超时。
    • 502.2 - 错误网关:提前退出。
    • 502.3 - 错误网关:ARR (转发器) 。
    • 502.4 - 错误网关:没有服务器 (ARR) 。
  • 503 - 服务不可用。

    IIS 7.0 及更高版本定义以下 HTTP 状态代码,这些代码指示错误 503 的更具体原因:

    • 503.0 - 应用程序池不可用。
    • 503.2 - 超出并发请求限制。
    • 503.3 - ASP.NET 队列已满
    • 503.4 - FastCGI 队列已满

常见 HTTP 状态代码和原因

下表介绍了一些常见 HTTP 状态代码的原因。

代码 说明 注释
200 确定 IIS 7.0 及更高版本成功处理了请求。
304 未修改 客户端浏览器请求缓存中已有的文档,并且该文档自缓存后尚未修改。 客户端浏览器使用文档的缓存副本,而不是从服务器下载文档。
400 请求错误 由于请求中 (Http.sys) ,超文本传输协议堆栈协议堆栈文件会阻止 IIS 7.0 和更高版本处理请求。 通常,此 HTTP 状态代码意味着请求包含的字符或序列无效或者请求与 Http.sys 文件中安全设置相冲突。
401.1 登录失败 登录尝试失败可能是因为用户名或密码无效。
401.2 由于服务器配置,登录失败 此 HTTP 状态代码指示服务器上身份验证配置设置中存在问题。
401.3 由于资源上的 ACL 而未经授权 此 HTTP 状态代码指示 NTFS 文件系统权限中存在问题。 即使您尝试访问的文件的权限正确无误,也可能会发生此问题。 例如,如果 IUSR 帐户无法访问目录,则会出现 C:\Winnt\System32\Inetsrv 此问题。
401.4 按筛选器授权失败 INTERNET Server 应用程序编程接口 (ISAPI) 筛选器不允许处理请求,因为存在授权问题。
401.5 ISAPI/CGI 应用程序授权失败 ISAPI 应用程序或 CGI (通用网关接口) 应用程序不允许处理请求,因为存在授权问题。
403.1 禁止执行访问 不会授予相应的"执行"权限级别。
403.2 禁止读取访问 不会授予相应的读取权限级别。 确认已设置 IIS 7.0 和更高版本以授予对目录的读取权限。 此外,如果使用默认文档,请验证默认文档是否存在。
403.3 禁止写入访问 不会授予相应的"写入"权限级别。 验证 IIS 7.0 和更高版本的权限和 NTFS 文件系统权限是否设置为向目录授予写入权限。
403.4 需要 SSL 请求通过非安全通道提出,并且 Web 应用程序需要安全套接字层 (SSL) 连接。
403.5 需要 SSL 128 服务器配置为需要 128 位 SSL 连接。 但是,请求不是使用 128 位加密发送的。
403.6 IP 地址被拒绝 服务器配置为拒绝访问当前 IP 地址。
403.7 需要客户端证书 服务器配置为需要证书进行客户端身份验证。 但客户端浏览器未安装相应的客户端证书。 有关详细信息,请参阅 HTTP error 403.7 when you run a web application that's hosted on a server that is running IIS 7.0.
403.8 网站访问被拒绝 服务器配置为基于客户端计算机的域名系统 (DNS) 拒绝请求。
403.12 映射器拒绝访问 要访问的页面需要客户端证书。 但是,映射到客户端证书的用户 ID 将被拒绝访问该文件。
403.13 已吊销客户端证书 客户端浏览器尝试使用由证书颁发机构吊销的客户端证书。
403.14 目录列表被拒绝 服务器未配置为显示内容目录列表,并且未设置默认文档。 请参阅HTTP Error 403.14 - 禁止在打开 IIS 网页时。
403.16 客户端证书不受信任或无效。 客户端浏览器尝试使用运行 IIS 7.0 和更高版本的服务器不信任的客户端证书,或者该服务器无效。 有关详细信息,请参阅 HTTP Error 403.16 when you try to access a website that's hosted on IIS 7.0
403.17 客户端证书已过期或无效。 客户端浏览器尝试使用已过期或尚未有效的客户端证书。
403.18 无法在当前网站中执行请求的 URL 应用程序池。 配置了自定义错误页,并且自定义错误页驻留在与应用程序池 URL 应用程序池页不同的位置。
403.19 无法在此客户端浏览器中执行客户端浏览器的 CGI 应用程序池。 证书的标识应用程序池"替换进程级别令牌"用户权限。
404.0 未找到。 您尝试访问的文件已移动或不存在。
404.2 ISAPI 或 CGI 限制。 请求的 ISAPI 资源或请求的 CGI 资源在计算机上受到限制。 有关详细信息,请参阅 HTTP Error 404.2 when you visit a web page that is hosted on a computer that is running IIS 7.0
404.3 MIME 类型限制。 请求的扩展类型的当前 MIME 映射是无效配置。
404.4 未配置处理程序。 所请求 URL 的文件扩展名没有配置为在 Web 服务器上处理请求的处理程序。
404.5 请求筛选配置拒绝。 请求的 URL 包含被服务器阻止的字符序列。
404.6 动词被拒绝。 请求使用未配置或无效的 HTTP 谓词提出。
404.7 文件扩展名被拒绝。 不允许请求的文件扩展名。
404.8 隐藏命名空间。 由于目录处于隐藏状态,请求的 URL 被拒绝。
404.9 Files 属性已隐藏。 请求的文件处于隐藏状态。
404.10 请求标头太长。 请求被拒绝,因为请求标头太长。
404.11 请求包含双转义序列。 请求包含一个双转义序列。
404.12 请求包含高位字符。 请求包含高位字符,并且服务器配置为不允许使用高位字符。
404.13 内容长度太大。 请求包含标头 Content-Length 。 标头的值 Content-Length 大于服务器允许的限制。 有关详细信息,请参阅 HTTP Error 404.13 - CONTENT_LENGTH_TOO_LARGE when you visit a web site that is hosted on a server that is running IIS 7.0
404.14 请求 URL 太长。 请求的 URL 超出了服务器允许的限制。
404.15 查询字符串太长。 请求包含的查询字符串长于服务器允许的限制。
404.17 映射到静态文件处理程序的动态内容。 有关详细信息,请参阅访问 IIS 7.0 上承载的网站时收到错误消息:HTTP 错误 404.17 - 未找到
405.0 不允许使用方法。 请求使用无效的 HTTP 方法提出。 有关详细信息,请参阅 HTTP Error 405.0 when you visit a website that is hosted on a server that is running IIS
406.0 MIME 类型无效。 该请求是使用包含无效 Accept 的 MIME 值的标头提出的。
412.0 先决条件失败。 请求通过使用包含无效值的请求标头 If-Match 进行。
500 内部服务器错误。 此 HTTP 状态代码可能由于许多服务器端原因发生。 有关详细信息,请参阅 HTTP Error 500.0 – Internal Server Error error when you open an IIS 7.0 Webpage
500.11 应用程序正在 Web 服务器上关闭。 由于目标服务器正在关闭,应用程序池处理请求。 等待工作进程完成关闭,然后再次尝试该请求。 如果此问题仍然存在,则 Web 应用程序可能会遇到阻止 Web 应用程序正确关闭的问题。
500.12 应用程序正忙于在 Web 服务器上重新启动。 请求不会得到处理,因为目标应用程序池正在重新启动。 刷新页面时,此 HTTP 状态代码应该会消失。 如果在刷新页面后再次显示此 HTTP 状态代码,则该问题可能是由扫描 Global.asa 文件的防病毒软件导致的。 如果此问题仍然存在,则 Web 应用程序可能会遇到阻止 Web 应用程序正确重新启动的问题。
500.13 Web 服务器太忙。 由于服务器太忙,无法接受任何新的传入请求,所以请求不会得到处理。 通常,此 HTTP 状态代码意味着传入并发请求数超过了 IIS 7.0 及更高版本 Web 应用程序可以处理的数量。 此问题可能是因为性能配置设置设置得太低、硬件不足或 IIS 7.0 及更高版本的 Web 应用程序中出现瓶颈。 常见的故障排除方法是在发生错误时生成 IIS 7.0 及更高版本进程的内存转储文件,然后调试内存转储文件。
500.15 不允许对 Global.asax 的直接请求。 对 Global.asa 文件或 Global.asax 文件进行直接请求。
500.19 配置数据无效。 此 HTTP 状态代码出现的原因是:关联的 http applicationhost.config或关联的 http 状态Web.config出现问题。 有关详细信息,请参阅打开IIS 网页时 HTTP 错误 500.19。
500.100 内部 ASP 错误。 处理 ASP 页面时Active Server Pages (出错) 页。 若要获取有关错误的更具体的信息,请禁用 Web 浏览器中的友好 HTTP 错误消息。 此外,IIS 日志可能显示对应于所发生错误的 ASP 错误号。
503.0 服务不可用。 请求将发送到当前应用程序池或当前已禁用的一个服务器。 若要解决此问题,请确保目标应用程序池已启动。 事件日志可能会提供有关停止或禁用应用程序池原因的信息。
503.2 超出了并发请求限制。 appConcurrentRequestLimit此属性设置为小于当前并发请求数的值。 IIS 7.0 及更高版本不允许的并发请求数多于 appConcurrentRequestLimit 属性的值。

在 IIS 8.0 中添加的 HTTP 子状态代码

子代码 说明
400.10 X-Forwarded-For (XFF) 标头
400.11 无效的 WebSocket 请求

在 ARR 3.0.1916 中添加的 HTTP 子状态代码

子代码 说明
400.601 ARR 请求 (错误)
400.602 ARR 设置 (格式)
400.603 分析 ARR (区域)
400.604 客户端已 (ARR)
400.605 ARR (的最大转发)
400.606 ARR (异步)
502.2 ARR (映射请求)
502.3 WinHTTP 异步完成失败 (ARR)
502.4 ARR (服务器)
502.5 ARR (WebSocket)
502.6 ARR 中转发 (失败)
502.7 在 ARR (执行)

参考

有关 HTTP 状态代码定义的信息,请参阅 HTTP/1.1: Status Code Definitions

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。