IIS 中的 HTTP 状态码

阿里云服务器

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

原始产品版本:   Internet Information Services 7.0 及更高版本

原始 KB 编号:   943891

介绍

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

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

1xx (信息性):临时响应——请求已收到,继续处理。

2xx(成功):服务器成功接收并接受请求。

3xx(重定向):需要采取进一步的行动才能完成请求。

4xx(客户端错误):请求包含错误,无法满足。

5xx(服务器错误):服务器未能满足请求。

日志文件位置

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 Created The client request has been fulfilled and has resulted in one or more new resources being created.

202 Accepted The client request has been accepted for processing, but the processing hasn't been completed.

203 Nonauthoritative information The client request was successful but the enclosed content has been modified from that of the origin server's response.

204 No content The server has successfully fulfilled the request and that there's no additional content to send in the response content.

205 Reset content The server has fulfilled the request and expects the user agent to reset the "document view," which caused the request to be sent, to its original state as received from the origin server.

206 Partial content 服务器通过传输所选表示的一个或多个部分成功满足了目标资源的范围请求。

3xx——重定向

这些 HTTP 状态代码表示客户端浏览器必须采取更多操作才能满足请求。例如,客户端浏览器可能必须请求服务器上的其他页面。或者,客户端浏览器可能必须使用代理服务器重复请求。

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

代码 描述

301 永久移动 目标资源已被分配一个新的永久 URI,并且对该资源的任何将来引用都应该使用其中一个封闭的 URI。

302 对象已移动 目标资源暂时位于不同的 URI 下。由于重定向可能偶尔会发生变化,因此客户端应该继续使用目标 URI 进行将来的请求

304 未修改 已收到条件 GET 或 HEAD 请求,并且如果不是条件评估为假,则会导致 200(OK)响应。

307 临时重定向 客户端浏览器请求已在缓存中的文档。并且该文档自缓存以来尚未被修改。客户端浏览器使用文档的缓存副本,而不是从服务器下载文档。

4xx-客户端错误

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

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

代码 描述

400 错误的请求 由于语法错误,服务器无法理解请求。客户端不应在未做任何修改的情况下重复该请求。有关更多信息,请参阅IIS 中的 HTTP 400 错误故障排除。

401 拒绝访问 该请求未被应用,因为它缺少目标资源的有效身份验证凭据。

403 禁止 服务器理解了请求但拒绝满足它。

404 未找到 原始服务器没有找到目标资源的当前表示,或者不愿意披露目标资源的存在。

405 方法不允许 请求行中收到的方法为原始服务器所知,但目标资源不支持。

406 不能接受的 客户端浏览器不接受所请求资源的 MIME 类型。

408 请求超时 服务器在准备等待的时间内没有收到完整的请求消息。

412 先决条件不满足 在服务器上测试时,请求标头字段中给出的一个或多个条件被评估为 false。

413 请求的实体太大 HTTP 请求负载太大。

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 限制:客户端 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 禁止访问:源访问被拒绝 不允许对资源的源代码发出 WebDAV 请求。

403.22 禁止:无限深度被拒绝 不允许具有无限深度的 WebDAV 请求。

403.501 禁止:已达到并发请求率限制 动态 IP 限制:来自同一客户端 IP 的并发请求过多。

403.502 禁止:已达到最大请求速率限制 动态 IP 限制:达到了指定时间限制内来自同一客户端 IP 的最大请求数。

403.503 禁止访问:IP 地址被拒绝 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 发送到静态文件处理程序的 WebDAV 请求 WebDAV 请求未经 WebDAV 功能处理,已被发送到静态文件处理程序。

404.17 映射到静态文件处理程序的动态内容 有关更多信息,请参阅HTTP 错误 404.17 - 未找到。

404.18 查询字符串序列被拒绝 该请求包含不允许的查询字符串序列。

404.19 过滤规则拒绝 由于请求过滤规则,该请求被拒绝。

404.20 URL 段过多 请求包含过多的 URL 段。

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

404.502 未找到:已达到最大请求速率限制 动态 IP 限制:达到了指定时间限制内来自同一客户端 IP 的最大请求数。

404.503 未找到:IP 地址被拒绝 IP 限制:客户端 IP 地址包含在拒绝列表中。

404.504 未找到:主机名被拒绝 IP 限制:客户端主机名包含在拒绝列表中。

405、406、408、412 和 413

代码 描述

405.0 方法不允许。 请求使用了无效的 HTTP 方法。有关更多信息,请参阅HTTP 错误 405.0。

406.0 不能接受的。 该请求是使用包含Accept无效 MIME 值的标头发出的。

408.0 请求超时。 服务器在准备等待的时间内没有收到完整的请求消息。

412.0 先决条件不满足。 该请求是使用If-Match包含无效值的请求标头发出的。

413.0 请求的实体太大。 请求使用的有效负载过大。

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 应用程序可能遇到了问题,导致无法正确关闭。

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.NEThttpModules配置不适用于托管管道模式。

500.23 ASP.NEThttpHandlers配置不适用于托管管道模式。

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 及更高版本定义了以下 HTTP 状态代码,用于指示错误 502 的更具体原因:

代码 描述

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 及更高版本定义了以下 HTTP 状态代码,用于指示错误 503 的更具体原因:

代码 描述

503.0 应用程序池不可用。 请求被发送到当前已停止或禁用的应用程序池。要解决此问题,请确保目标应用程序池已启动。事件日志可能会提供有关应用程序池停止或禁用的原因的信息。

503.2 超出并发请求限制。 该appConcurrentRequestLimit属性设置为低于当前并发请求数的值。IIS 7.0 及更高版本不允许超过该appConcurrentRequestLimit属性值的并发请求数。

503.3 ASP.NET 队列已满

503.4 FastCGI 队列已满