IIS 中的 HTTP 状态代码

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

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

简介

尝试使用 HTTP 协议访问运行 IIS 的服务器上的内容时,IIS 将返回一个数字代码,指示请求的结果和响应的语义,包括请求是否成功。

状态代码的第一位数字定义响应的类。 最后两位数字没有任何分类作用。 第一位数字有五个值:

日志文件位置

HTTP 状态代码记录在 IIS 日志中。 默认情况下,IIS 7.0 及更高版本将日志文件放入以下文件夹中:
inetpub\logs\Logfiles

此文件夹包含每个网站的单独目录。 日志文件每天在目录中创建,默认情况下使用日期进行命名。 例如,某日志文件可能命名为“exYYMMDD.log”

HTTP 状态代码

本部分介绍一些常见的 HTTP 状态代码。

注意

本文未列出 HTTP 规范中规定的每一个可能的 HTTP 状态代码。 例如,自定义 Internet 服务器 API (ISAPI) 筛选器或自定义 HTTP 模块可以设置自己的 HTTP 状态代码。

1xx - 信息

这些 HTTP 状态代码指示用于在向客户端计算机发送最终响应之前传达请求进度或状态的临时响应。

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

代码 说明 注释
100 继续 请求的初始部分已收到,但尚未被服务器拒绝。 服务器打算在请求完全接收并执行后发送最终响应。
101 切换协议 服务器了解并愿意遵守客户端对正在使用的应用程序协议进行更改的请求。

2xx - 成功

这些 HTTP 状态代码表示服务器成功接收并接受了客户端的请求。

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

代码 说明 注释
200 确定 已成功处理客户端请求。
201 已创建 客户端请求已实现,并且正在因此创建一个或多个新资源。
202 Accepted 已接受客户端请求以进行处理,但处理尚未完成。
203 非权威信息 客户端请求成功,但已根据源服务器的响应修改了包含的内容。
204 无内容 服务器已成功实现请求,并且响应内容中没有要发送的其他内容。
205 重置内容 服务器已实现请求,并且希望用户代理将导致请求被发送的“文档视图”重置为从源服务器接收时的原始状态。
206 部分内容 服务器通过传输所选表示形式的一个或多个部分,成功实现了目标资源的范围请求。

3xx - 重定向

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

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

代码 说明 注释
301 永久移动 已为目标资源分配了一个新的永久 URI,将来对此资源的任何引用应使用其中一个随附的 URI。
302 对象已移动 目标资源暂时位于在另一个 URI 下。 由于重定向有时可能会更改,因此客户端应继续将目标 URI 用于将来的请求
304 未修改 已收到条件 GET 或 HEAD 请求,如果条件的计算结果不为 false,将导致“200 (正常)”响应。
307 临时重定向 客户端浏览器请求缓存中已有的文档。 并且文档自缓存后尚未被修改。 客户端浏览器使用文档的缓存副本,而不是从服务器下载文档。

4xx - 客户端错误

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

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

代码 说明 注释
400 错误请求 服务器无法理解该请求,因为语法格式不正确。 客户端不应在不进行修改的情况下重复请求。 有关详细信息,请参阅对 IIS 中的 HTTP 400 错误进行疑难解答
401 Access denied 请求尚未应用,因为它缺少目标资源的有效身份验证凭据。
403 禁止访问 (Forbidden) 服务器已理解请求,但拒绝实现请求。
404 未找到 源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式。
405 方法不允许。 源服务器知道请求线路中接收的方法,但目标资源不支持该方法。
406 客户端浏览器不接受所请求页面的 MIME 类型。
408 请求超时 服务器在指定等待时间内未收到完整的请求消息。
412 先决条件失败。 在服务器上测试时,请求标头字段中给定的一个或多个条件的计算结果为 false。

400 - 错误请求

由于请求存在问题,超文本传输协议堆栈 (Http.sys) 文件阻止了 IIS 7.0 及更高版本处理该请求。 通常,此 HTTP 状态代码意味着请求包含的字符或序列无效,或者请求与 Http.sys 文件中的安全设置有冲突。

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

代码 说明
400.1 无效的目标标头
400.2 无效的深度标头
400.3 无效的 If 标头
400.4 无效的覆盖标头
400.5 无效的翻译标头
400.6 无效的请求正文
400.7 无效的内容长度
400.8 无效的超时
400.9 无效的锁定标记

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)

401 - 访问被拒绝

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

代码 说明 注释
401.1 登录失败 登录尝试失败可能是因为用户名或密码无效。
401.2 由于服务器配置,登录失败 此 HTTP 状态代码指示服务器上的身份验证配置设置存在问题。
401.3 由于资源上的 ACL 而未授权 此 HTTP 状态代码指示 NTFS 文件系统权限存在问题。 即使尝试访问的文件的权限正确无误,也可能会发生此问题。 例如,如果 IUSR 帐户没有 C:\Winnt\System32\Inetsrv 目录的访问权限,则会发生此问题。
401.4 按筛选器授权失败 由于授权问题,Internet 服务器应用程序编程接口 (ISAPI) 筛选器不允许处理请求。
401.5 按 ISAPI/CGI 应用程序授权失败 由于授权问题,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 读取访问被禁止 不会授予相应级别的读取权限。 确认已设置 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 错误 403.7
403.8 站点访问被拒绝 服务器配置为基于客户端计算机的域名系统 (DNS) 名称拒绝请求。 有关详细信息,请参阅动态 IP 地址限制
403.9 禁止访问:尝试连接到 Web 服务器的客户端过多
403.10 禁止访问:Web 服务器配置为拒绝“执行”访问
403.11 禁止访问:密码已更改
403.12 映射器拒绝访问 要访问的页面需要客户端证书。 但是,映射到客户端证书的用户 ID 将被拒绝访问该文件。
403.13 客户端证书已吊销 客户端浏览器尝试使用已被证书颁发机构吊销的客户端证书。
403.14 目录列表被拒绝 服务器未配置为显示内容目录列表,并且未设置默认文档。 有关详细信息,请参阅 HTTP 错误 403.14
403.15 禁止访问:客户端访问许可证已超出 Web 服务器的限制
403.16 客户端证书不受信任或无效。 客户端浏览器尝试使用无效的客户端证书。 或者运行 IIS 7.0 及更高版本的服务器不信任客户端证书。 有关详细信息,请参阅 HTTP 错误 403.16
403.17 客户端证书已过期或尚未生效。 客户端浏览器尝试使用已过期或尚未生效的客户端证书。
403.18 无法在当前应用程序池中执行请求的 URL。 配置了自定义错误页。 并且客户错误页的应用程序池与请求的 URL 的应用程序池不同。
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 限制。 请求的 ISAPI 资源或请求的 CGI 资源在计算机上受到限制。 有关详细信息,请参阅 HTTP 错误 404.2
404.3 MIME 类型限制。 请求的扩展类型的当前 MIME 映射无效或未配置。
404.4 未配置处理程序。 所请求 URL 的文件扩展名不具备配置为在 Web 服务器上处理请求的处理程序。
404.5 被请求筛选配置拒绝。 请求的 URL 包含被服务器阻止的字符序列。
404.6 谓词被拒绝。 请求使用的 HTTP 谓词未配置或无效。
404.7 文件扩展名被拒绝。 请求的文件扩展名不被允许。
404.8 隐藏的命名空间。 由于目录处于隐藏状态,请求的 URL 被拒绝。
404.9 文件属性已隐藏。 请求的文件处于隐藏状态。
404.10 请求标头过长。 请求被拒绝,因为请求标头过长。
404.11 请求包含双重转义序列。 请求包含一个双转义序列。
404.12 请求包含高位字符。 请求包含高位字符,并且服务器配置为不允许使用高位字符。
404.13 内容过长。 请求包含 Content-Length 标头。 Content-Length 标头的值大于服务器允许的限制。 有关详细信息,请参阅 HTTP 错误 404.13 - CONTENT_LENGTH_TOO_LARGE
404.14 请求 URL 太长。 请求的 URL 超出服务器允许的限制。
404.15 查询字符串太长。 请求包含的查询字符串长于服务器允许的限制。
404.16 DAV 请求已发送到静态文件处理程序
404.17 映射到静态文件处理程序的动态内容。 有关更多信息,请参阅 HTTP 错误 404.17 - 未找到
404.18 查询字符串序列被拒绝
404.19 被筛选规则拒绝
404.20 URL 段过多
404.501 未找到:来自同一客户端 IP 的请求过多;已达“动态 IP 限制并发”请求速率限制
404.502 未找到:来自同一客户端 IP 的请求过多;已达“动态 IP 限制最大值”请求速率限制
404.503 未找到:IP 地址包含在“IP 限制”的“拒绝”列表中
404.504 未找到:主机名包含在“IP 限制”的“拒绝”列表中

405、406、412

代码 说明 注释
405.0 方法不允许。 请求是使用无效的 HTTP 方法提出的。 有关详细信息,请参阅 HTTP 错误 405.0
406.0 无效的 MIME 类型。 该请求是使用包含无效 MIME 值的 Accept 标头提出的。
412.0 先决条件失败。 该请求是使用包含无效值的 If-Match 请求标头提出的。

5xx - 服务器错误

这些 5xx HTTP 状态代码表示服务器因遇到错误而无法完成请求。

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

代码 说明 注释
500 内部服务器错误 服务器遇到意外情况,导致无法实现请求。
501 标头值指定未实现的配置 服务器不支持满足请求所需的功能。
502 Web 服务器在充当网关或代理时收到无效响应 服务器在充当网关或代理时收到来自它在尝试实现请求时所访问的入站服务器的无效响应。 有关更多信息,请参阅 对 ARR 中的 502 错误进行疑难解答
503 服务不可用 由于临时重载或计划内维护,服务器当前无法处理请求,这在一段时间延迟后可能会得到缓解。

500 - 内部服务器错误

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

代码 说明 注释
500.0 发生模块或 ISAPI 错误。 此 HTTP 状态代码可能会因为许多服务器端原因而出现。 有关详细信息,请参阅 HTTP 错误 500.0 - 内部服务器错误
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 状态代码是因为关联的 applicationhost.config 文件或关联的 Web.config 文件出现问题。 有关详细信息,请参阅 HTTP 错误 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 错误。 在处理 Active Server Pages (ASP) 时发生错误。 要获取有关错误的更具体信息,请禁用 Web 浏览器中的友好 HTTP 错误消息。 此外,IIS 日志可能显示对应于所发生错误的 ASP 错误编号。

502 - 错误网关

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

代码 说明
502.1 CGI 应用程序超时。
502.2 错误网关:提前退出。
502.3 错误网关:转发器连接错误 (ARR)。
502.4 错误网关:无服务器 (ARR)。

已在 ARR 3.0.1916 中添加以下 HTTP 状态代码

代码 说明
502.2 映射请求失败 (ARR)
502.3 WinHTTP 异步完成失败 (ARR)
502.4 无服务器 (ARR)
502.5 WebSocket 失败 (ARR)
502.6 转发请求失败 (ARR)
502.7 执行请求失败 (ARR)

503 - 服务不可用

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

代码 说明 注释
503.0 应用程序池不可用。 请求被发送到当前已停止或禁用的应用程序池。 要解决此问题,请确保目标应用程序池已启动。 事件日志可能会提供有关应用程序池停止或禁用原因的信息。
503.2 超出并发请求限制。 appConcurrentRequestLimit 属性设置为小于当前并发请求数的值。 IIS 7.0 及更高版本不允许并发请求数超过 appConcurrentRequestLimit 属性的值。
503.3 ASP.NET 队列已满
503.4 FastCGI 队列已满

详细信息

第三方信息免责声明

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