共享服务器无IIS管理器权限时如何移除响应头Microsoft-IIS/8.5
无IIS管理权限的共享环境下移除
Microsoft-IIS/8.5响应头的实操方案 所有操作仅通过站点根目录的web.config文件完成,不需要登录IIS管理器,不需要向服务商申请任何服务器级配置权限,适配绝大多数支持ASP.NET的共享IIS环境。
基础配置:关闭版本头输出
这是最通用的首选方案,对IIS7.0及以上全版本生效,不需要依赖额外组件。在站点的web.config文件的<system.web>节点下添加如下配置:
<system.web> <!-- 关闭IIS默认的版本号响应头输出 --> <httpRuntime enableVersionHeader="false" /> </system.web>
配置生效逻辑:IIS默认会在Server响应头中拼接自身版本标识,这个配置会直接关闭版本号的拼接逻辑,不需要修改服务器全局配置,上传文件后即时生效。
进阶配置:移除残留的服务器头
如果应用上述基础配置后,测试响应头依然存在Microsoft-IIS/8.5标识(常见于集成托管管道模式的站点),可以通过URL重写模块的出站规则直接清空响应头内容。
注:目前主流共享IIS服务商均默认预装URL重写2.0模块,不需要额外申请安装权限,无需联系服务商即可生效。
在web.config的<system.webServer>节点下添加如下重写规则:
<system.webServer> <rewrite> <outboundRules> <rule name="ClearServerResponseHeader"> <match serverVariable="RESPONSE_Server" pattern=".*" /> <action type="Rewrite" value="" /> </rule> </outboundRules> </rewrite> </system.webServer>
该规则的作用是匹配所有名为Server的响应头变量,直接将其内容替换为空,彻底清除版本标识。
实操注意事项
- 所有配置节点要严格按照XML层级书写,不要把
<system.web>、<system.webServer>节点嵌套到其他父节点内部,否则会出现配置不生效的问题 - 不要尝试修改服务器全局的
applicationHost.config文件,共享环境下用户没有该文件的读写权限,所有可行的方案必须落地在站点自有目录的配置文件中 - 配置上传完成后,不需要重启站点或服务器,直接发起HTTP请求测试即可看到生效结果
- 如果需要同时移除
X-Powered-By: ASP.NET这类附带的版本标识,可以按照上面的重写逻辑,新增对应匹配RESPONSE_X_POWERED_BY变量的规则即可
内容的提问来源于stack exchange,提问作者gorlomi
相关产品推荐
相关产品推荐

