在 IIS 7.5 中托管的 .Net Remoting 服务中,如何删除“Server : IIS/7.5”标记表单响应头
Posted
技术标签:
【中文标题】在 IIS 7.5 中托管的 .Net Remoting 服务中,如何删除“Server : IIS/7.5”标记表单响应头【英文标题】:In a .Net Remoting service hosted in IIS 7.5, how can remove "Server : IIS/7.5" tag form response header 【发布时间】:2020-11-25 13:01:23 【问题描述】:我有一个 .Net 应用程序,它使用 spring.net 远程处理通过 IIS 7.5 公开远程处理服务。出于安全原因,我想从 HTTP 响应标头中删除一些信息,例如“服务器:IIS/7.5”。 我轻松删除了 X-Powered-By 等其他标签,但是对于服务器标签,我尝试了互联网上提供的所有解决方案,但都没有奏效。我尝试设置 DisableServerHeader 注册表项或安装 URLrewrite 工具并更改我的 web.config 并添加 outboundRule 或任何其他编码解决方案,例如在我的 global.asax 文件中添加自定义 HTTP 模块或处理 http 上下文的 preRequestHandling。但没有一个对我有用。 基本上,考虑到我正在使用 .net 3.5 和 .net 远程处理 IIS 7.5,是否可以从响应标头中删除这个值 Server ? 我应该提一下,如果我浏览我放入主机目录的任何页面,此标记的值将变为空,但是对于我的 .Net 远程处理请求,它不起作用并且响应 http 标头的服务器标记的值仍然是 IIS /7.5
【问题讨论】:
更新注册表项后,请确保您重新启动机器。 我用net stop/start w3svc命令重启了w3svc,也用iisreset命令重启了iis,还不够吗? 【参考方案1】:很遗憾,您无法真正删除服务器标头。但是您可以重写其内容并将其清空。在 IIS 7+(IIS 7、8.5、8.0、8.5、IIS 10.0)上,使用重写出站规则从 Server: 标头响应中删除 Web 服务器版本信息。
您可以使用以下 URL 重写出站规则:
<rewrite>
<outboundRules rewriteBeforeCache="true">
<rule name="Remove Server header">
<match serverVariable="RESPONSE_Server" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
</rewrite>
【讨论】:
感谢您的 Jalpa,我完全按照这些步骤操作,对于最后一个解决方案,我还在安装 urlrewrite 后添加了出站规则,但不幸的是,这些解决方案都不适合我,我还重新启动了 IIS 和 w3svc 服务。但是服务器标签的值根本没有改变。也许这是因为利用 .网络远程处理作为我的通信技术。 我应该提一下,如果我浏览我放入主机目录的任何页面,此标签的值将变为空,但对于我的远程请求它不起作用并且该值仍然是 IIS/7.5 . @FahimehRahmatipoor 你能分享一下你使用的操作系统版本吗?您是否在 iis 中托管该网站?您可以尝试在 iis 中运行失败的请求跟踪,以检查规则不起作用的原因。 docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/…. 我使用的是 win server 2008 和 IIS 7.5。正如我之前所说,我可以看到该规则适用于请求的网页,因此当我浏览 html 文件时,响应标头中的服务器标记没有价值。但是在同样托管我的 .Net 远程服务的主机应用程序中,远程处理请求的响应包含具有填充值的服务器标记。似乎此规则不适用于 .Net 远程响应。 @FahimehRahmatipoor 你可以尝试使用网址扫描工具techcommunity.microsoft.com/t5/iis-support-blog/…以上是关于在 IIS 7.5 中托管的 .Net Remoting 服务中,如何删除“Server : IIS/7.5”标记表单响应头的主要内容,如果未能解决你的问题,请参考以下文章
将 asp.net core web api 部署到 IIS 7.5 时出现 500 错误
在 IIS 7.5 中托管的 Web Api 中找不到 HTTP 404 页面
Restful WCF IIS 7.5 405 方法不允许间歇