修复︰ 内部 IP 地址服务器没有主机标头,或者具有空主机头的 HTTP 请求发送到服务器时显示 IIS 7.0


症状


请考虑以下情形:

  • 没有一个主机标头或具有空值的主机标头的 HTTP 请求发送到 Internet 信息服务 (IIS) 7.0 服务器。
  • 在 IIS 7 配置 ISAPI 筛选器。ISAPI 筛选器SF_NOTIFY_PREPROC_HEADERS通知时调用GetServerVariables (服务器名称)的函数。
在此方案中,服务器的内部 IP 地址返回到客户端的 HTTP 响应。


备注:
  • 在某些情况下,IIS 7.0 服务器可能会通过安全扫描工具,如果服务器的内部 IP 地址的显示标记为"不安全"。
  • 对于每个请求发生SF_NOTIFY_PREPROC_HEADERS通知。这些通知指示服务器已完成预处理与该请求关联的标头,但尚未开始处理的标头中的信息。
  • 浏览器发送的 HTTP 请求时,使用 HTTP/1.1 的 web 浏览器必须包含主机标头。因此,出现这种情况通常不通过 Web 浏览器发送的 HTTP 请求时,或者当使用 HTTP/1.0 的 Web 浏览器发送。

原因


因为 IIS 会读取配置数据中的alternateHostName属性之前调用SF_NOTIFY_PREPROC_HEADERS出现问题。因此,IIS 只能返回服务器的 IP 地址。



如果请求包含一个主机值和GetServerVariables (服务器名称)调用SF_NOTIFY_PREPROC_HEADERS中,服务器名称将包含客户机的主机标头的值。

解决方案


修补程序信息

可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。此修复程序仅适用于遇到本文中描述的问题的系统。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。

如果此修复程序可供下载,则在此知识库文章的顶部会出现“修补程序下载可用”部分。如果未显示此部分,请与 Microsoft 客户服务和支持部门联系以获取此修复程序。

注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请访问下面的 Microsoft 网站︰注意:"提供修补程序下载"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。

Windows Vista 和 Windows Server 2008 的重要修复程序包含在相同的程序包中。但是,这些产品中的只有一个可能"修补程序请求"页上列出。若要请求适用于 Windows Vista 和 Windows Server 2008 的修复程序包,只需选择页列出的产品。

系统必备组件

您必须将 Windows Vista Service Pack 1 或 Windows Server 2008 要应用此修补程序的安装。

重启要求

应用此修补程序后,必须重新启动计算机。

修补程序替换信息

此修补程序不替换任何其他修补程序。

文件信息

此修复程序的英文版具有的文件属性 (或更新的文件属性)在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用控制面板中的日期和时间项中的时区选项卡。
IIS 7.0 x86
文件名称文件版本文件大小日期时间平台
Hwebcore.dll7.0.6001.2236912,80005-Feb-200905:41x86
Iiscore.dll7.0.6001.22369190,46405-Feb-200905:41x86
W3dt.dll7.0.6001.2236923,55205-Feb-200905:41x86
IIS 7.0 x64
文件名称文件版本文件大小日期时间平台
Hwebcore.dll7.0.6001.2236915,36005-Feb-200906:14x64
Iiscore.dll7.0.6001.22369288,76805-Feb-200906:14x64
W3dt.dll7.0.6001.2236930,72005-Feb-200906:15x64
IIS 7.0 中,IA64
文件名称文件版本文件大小日期时间平台
Hwebcore.dll7.0.6001.2236937,37605-Feb-200904:42IA-64
Iiscore.dll7.0.6001.22369543,23205-Feb-200904:42IA-64
W3dt.dll7.0.6001.2236951,71205-Feb-200904:42IA-64

状态


Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

详细信息


有关 ISAPI 筛选器的事件顺序的详细信息,请访问下面的 Microsoft 网站︰有关在 IIS 7 中的请求处理的详细信息,请访问下面的 Microsoft 网站︰

注意:因为alternateHostName用来停止泄露服务器的内部 IP 地址,还应设置alternateHostName的值当您安装此修补程序。要将alternateHostName值设置,执行以下命令︰
appcmd.exe set config -section:system.webServer/serverRuntime /alternateHostName:"<Server Name>"  /commit:apphost
有关 IIS 7.0 serverRuntime元素的详细信息,请访问下面的 Microsoft 网站︰

参考资料


有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
用于描述 Microsoft 软件更新的标准术语的824684说明