IIS 中的 HTTP 状态代码
本文提供了Microsoft Internet Information Services(IIS)中的超文本传输协议(HTTP)状态代码的列表。
原始产品版本: Internet Information Services
原始 KB 编号:943891
简介
尝试使用 HTTP 协议访问运行 IIS 的服务器上的内容时,IIS 将返回一个数字代码,指示请求的结果和响应的语义,包括请求是否成功。
状态代码的第一位数字定义响应的类。 最后两位数字没有任何分类作用。 第一位数字有五个值:
- 1xx (信息):临时响应 - 已收到请求,正在继续处理。
- 2xx (成功):服务器已成功接收并接受请求。
- 3xx (重定向):需要采取进一步操作才能完成请求。
- 4xx (客户端错误):请求包含错误,无法实现。
- 5xx (服务器错误):服务器无法完成请求。
日志文件位置
HTTP 状态代码记录在 IIS 日志中。 默认情况下,IIS 将日志文件放入文件夹中: inetpub\logs\Logfiles
。
此文件夹包含每个网站的单独目录。 日志文件每天在目录中创建,默认情况下使用日期进行命名。 例如,日志文件可能命名为 exYYMMDD.log。
HTTP 状态代码
本部分介绍一些常见的 HTTP 状态代码。
注意
本文未列出 HTTP 规范中规定的每一个可能的 HTTP 状态代码。 例如,自定义 Internet 服务器 API (ISAPI) 筛选器或自定义 HTTP 模块可以设置自己的 HTTP 状态代码。
1xx - 信息
这些 HTTP 状态代码指示用于在向客户端计算机发送最终响应之前传达请求进度或状态的临时响应。
IIS 使用以下信息性 HTTP 状态代码:
代码 | 说明 | 注释 |
---|---|---|
100 | 继续 | 请求的初始部分已收到,尚未被服务器拒绝。 服务器打算在请求完全接收并执行后发送最终响应。 |
101 | 切换协议 | 服务器了解并愿意遵守客户端对正在使用的应用程序协议进行更改的请求。 |
2xx - 成功
这些 HTTP 状态代码表示服务器成功接收并接受了客户端的请求。
IIS 使用以下成功的 HTTP 状态代码:
代码 | 说明 | 注释 |
---|---|---|
200 | 确定 | 已成功处理客户端请求。 |
201 | 已创建 | 客户端请求已实现,并且正在因此创建一个或多个新资源。 |
202 | 已接受 | 已接受客户端请求进行处理,但尚未完成处理。 |
203 | 非权威信息 | 客户端请求成功,但已从源服务器的响应中修改封闭内容。 |
204 | 无内容 | 服务器已成功满足请求,并且响应内容中没有要发送的其他内容。 |
205 | 重置内容 | 服务器已完成请求,并期望用户代理重置“文档视图”,这导致请求发送到其原始状态(从源服务器接收)。 |
206 | 部分内容 | 服务器通过传输所选表示形式的一个或多个部分,成功实现了目标资源的范围请求。 |
3xx - 重定向
这些 HTTP 状态代码指示客户端浏览器必须执行更多操作以履行请求。 例如,客户端浏览器可能必须请求服务器上的其他页面。 或者,客户端浏览器可能必须使用代理服务器重复请求。
IIS 使用以下重定向 HTTP 状态代码:
代码 | 说明 | 注释 |
---|---|---|
301 | 永久移动 | 已为目标资源分配了一个新的永久 URI,将来对此资源的任何引用应使用其中一个随附的 URI。 |
302 | 对象已移动 | 目标资源暂时位于在另一个 URI 下。 由于重定向有时可能会更改,因此客户端应继续将目标 URI 用于将来的请求 |
304 | 未修改 | 已收到条件 GET 或 HEAD 请求,如果条件的计算结果为 false,则会导致 200 (正常) 响应。 |
307 | 临时重定向 | 客户端浏览器请求缓存中已有的文档。 并且文档自缓存后尚未被修改。 客户端浏览器使用文档的缓存副本,而不是从服务器下载文档。 |
4xx - 客户端错误
这些 HTTP 状态代码指示发生了错误,并且客户端浏览器似乎出错。 例如,客户端浏览器可能已请求不存在的页面。 或者,客户端浏览器可能未提供有效的身份验证信息。
IIS 使用以下客户端错误 HTTP 状态代码:
代码 | 说明 | 注释 |
---|---|---|
400 | 无效的请求 | 由于语法格式不正确,服务器无法理解请求。 客户端不应在未经修改的情况下重复请求。 有关详细信息,请参阅对 IIS 中的 HTTP 400 错误进行疑难解答。 |
401 | Access denied | 请求尚未应用,因为它缺少目标资源的有效身份验证凭据。 |
403 | 禁止访问 (Forbidden) | 服务器已理解请求,但拒绝实现请求。 |
404 | 未找到 | 源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式。 |
405 | 不允许的方法 | 源服务器知道请求线路中接收的方法,但目标资源不支持该方法。 |
406 | 不可接受 | 客户端浏览器不接受所请求资源的 MIME 类型。 |
408 | 请求超时 | 服务器在指定等待时间内未收到完整的请求消息。 |
412 | 前置条件失败 | 在服务器上测试时,请求标头字段中给定的一个或多个条件的计算结果为 false。 |
413 | 请求实体太大 | HTTP 请求有效负载太大。 |
400 - 错误请求
由于请求出现问题,超文本传输协议堆栈(Http.sys)文件阻止 IIS 处理请求。 通常,此 HTTP 状态代码意味着请求包含的字符或序列无效,或者请求与 Http.sys 文件中的安全设置有冲突。
IIS 定义了以下 HTTP 状态代码,这些代码指示错误 400 的更具体原因:
代码 | 说明 |
---|---|
400.1 | 无效的目标标头 |
400.2 | 无效的深度标头 |
400.3 | 无效的 If 标头 |
400.4 | 无效的覆盖标头 |
400.5 | 无效的翻译标头 |
400.6 | 无效的请求正文 |
400.7 | 无效的内容长度 |
400.8 | 无效的超时 |
400.9 | 无效的锁定标记 |
自 Windows Server 2012 中包含的 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 定义了多个 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 定义了以下 HTTP 状态代码,这些代码指示错误 403 的更具体原因:
代码 | 说明 | 注释 |
---|---|---|
403.1 | 执行访问被禁止 | 不会授予相应级别的执行权限。 |
403.2 | 读取访问被禁止 | 不会授予相应级别的读取权限。 验证是否已设置 IIS 以向目录授予读取权限。 此外,如果使用默认文档,请验证默认文档是否存在。 |
403.3 | 写入访问被禁止 | 不会授予相应级别的写入权限。 检查 IIS 权限和 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 的服务器不信任客户端证书。 有关详细信息,请参阅 HTTP 错误 403.16。 |
403.17 | 客户端证书已过期或尚无效 | 客户端浏览器尝试使用已过期或尚未生效的客户端证书。 |
403.18 | 无法在当前应用程序池中执行请求的 URL | 配置了自定义错误页。 并且客户错误页的应用程序池与请求的 URL 的应用程序池不同。 |
403.19 | 无法为此应用程序池中的客户端浏览器执行 CGI 应用程序 | 应用程序池的标识不具有“替换进程级令牌”用户权限。 |
403.20 | 禁止访问:Passport 登录失败 | 不允许使用 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 定义了以下 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 | 不可接受。 | 该请求是使用包含无效 MIME 值的 Accept 标头提出的。 |
408.0 | 请求已超时。 | 服务器在指定等待时间内未收到完整的请求消息。 |
412.0 | 先决条件失败。 | 该请求是使用包含无效值的 If-Match 请求标头提出的。 |
413.0 | 请求实体太大。 | 该请求是使用过大的有效负载发出的。 |
5xx - 服务器错误
这些 5xx HTTP 状态代码表示服务器因遇到错误而无法完成请求。
IIS 使用以下服务器错误 HTTP 状态代码:
代码 | 说明 | 注释 |
---|---|---|
500 | 内部服务器错误 | 服务器遇到意外情况,导致无法实现请求。 |
501 | 标头值指定未实现的配置 | 服务器不支持满足请求所需的功能。 |
502 | Web 服务器在充当网关或代理时收到无效响应 | 服务器在充当网关或代理时收到来自它在尝试实现请求时所访问的入站服务器的无效响应。 有关更多信息,请参阅 对 ARR 中的 502 错误进行疑难解答。 |
503 | 服务不可用 | 由于临时重载或计划内维护,服务器当前无法处理请求,这在一段时间延迟后可能会得到缓解。 |
500 - 内部服务器错误
IIS 定义了以下 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 Web 应用程序可以处理的数量。 如果在设置性能配置设置太低、硬件不足或 IIS Web 应用程序中出现瓶颈,则可能会出现此问题。 常见的故障排除方法是在发生错误时生成 IIS 进程的内存转储文件,然后调试内存转储文件。 |
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 定义了以下 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 定义了以下 HTTP 状态代码,这些代码指示错误 503 的更具体原因:
代码 | 说明 | 注释 |
---|---|---|
503.0 | 应用程序池不可用。 | 请求被发送到当前已停止或禁用的应用程序池。 要解决此问题,请确保目标应用程序池已启动。 事件日志可能会提供有关应用程序池停止或禁用原因的信息。 |
503.2 | 超出并发请求限制。 | appConcurrentRequestLimit 属性设置为小于当前并发请求数的值。 IIS 不允许的并发请求数超过属性的值 appConcurrentRequestLimit 。 |
503.3 | ASP.NET 队列已满 | |
503.4 | FastCGI 队列已满 |
详细信息
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。