对IIS的GET请求返回Microsoft HttpApi/2.0
我有6台相同的机器运行IIS和Apache。今天,其中一个决定停止服务请求。当我从localhost/resource尝试时,我可以访问所有的webapps,但当我从url/resource尝试时,我得到了404。我对不工作的机器执行了Get请求,我得到了以下信息:对IIS的GET请求返回Microsoft HttpApi/2.0,iis,Iis,我有6台相同的机器运行IIS和Apache。今天,其中一个决定停止服务请求。当我从localhost/resource尝试时,我可以访问所有的webapps,但当我从url/resource尝试时,我得到了404。我对不工作的机器执行了Get请求,我得到了以下信息: 服务器:Microsoft HTTPAPI/2.0 连接:关闭 与工作服务器相比: 服务器:Microsoft IIS/8.5 X-Powered-By:ASP.NET 内容类型:text/html 尝试搜索此问题,但没有发
- 服务器:Microsoft HTTPAPI/2.0
- 连接:关闭
- 服务器:Microsoft IIS/8.5
- X-Powered-By:ASP.NET
- 内容类型:text/html
尝试搜索此问题,但没有发现任何问题,有人知道吗?Windows有一个HTTP服务,用于管理对IIS和Windows计算机上其他启用HTTP的服务的调用。您需要将其配置为处理您的呼叫,或者,在WAMP或类似windows场景下的非IIS web服务器的情况下,您可能只需要将其关闭 当您看到“Microsoft HttpApi/2.0”返回错误时,例如400“坏URL”或“坏标头”等。问题很可能是因为HTTP.sys服务正在拦截您的HTTP请求并终止它,因为它不符合配置的最低验证规则 此配置位于注册表中的HKEY\U LOCAL\U MACHINE\System\CurrentControlSet\Services\HTTP\Parameters。在我的例子中,它令人窒息,因为我有一个RESTful调用,url中有一个400个字符的段,比默认值260多160个字符,所以我
- “”
- 打开regedit
- 导航HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\
- 如果DisableServerHeader不存在,则创建它(DWORD 32位),并将其值设为2。如果它确实存在,且值不是2,请将其设置为2
- 最后,通过调用
然后net stop http
重新启动服务net start http
src:
将下面的注册表标志设置为:2
HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\DisableServerHeader
将此设置为2将确保自主机WCF服务不再发送服务器头,从而确保我们符合安全要求。
- 有点晚了,所以放在这里给子孙后代;-)
在尝试了在网络上找到的各种解决方案后,我几乎放弃了,但找到了这个小金块
如果响应的服务器头返回Microsoft HttpApi/2.0,则表示调用的是HTTP.sys,而不是IIS
因此,很多变通方法都不起作用(URLScan等)
然而,这种做法奏效了:
请注意,这将禁用所有服务器头 默认值0启用标头,值1禁用来自驱动程序(http.sys)的服务器标头,但应用程序仍然可以有标头 对我来说,我必须重新启动服务器才能使更改生效
希望这对某人有所帮助这个问题和一系列的回答帮助我弄清了我遇到的相关问题。我的问题集中在只使用一个子域访问我们的服务器(例如,在公司网络上在浏览器中键入“www/somepath”),这在过去在旧服务器上有效,但在系统升级到新服务器时不再有效。在使用Chrome开发工具检查网络流量时,我在标题中看到了意外的
Microsoft HttpApi/2.0
字符串
我的HTTP.sys进程已经在进行日志记录,因此我可以验证我的通信量是否进入该服务并返回404 NotFound状态码
我的解决方案是为子域的IIS站点添加绑定,使IIS响应而不是HTTP.sys进程,如本服务器故障文章所述-我在客户端站点上开发web应用程序时遇到了一个问题,即加载了站点根页面,但是对于文件夹中存在的文件,reports文件夹始终返回404。当应用程序设置为4时,404页面显示的是.Net版本的2,对根目录中不存在的页面的测试返回的404页面显示的是.Net 4 我刚试过,就得到了一个Microsoft Reporting Services页面。不是我申请的一部分
当出现意外的404并且文件存在时,请确保只检查文件夹的默认文档。在我的情况下,运行Windows 10 Pro的是Windows多点服务 通过执行:
net stop wms
端口80已发布。您是否检查了IIS上的主机头配置?这里的主题有点离题,但请检查您的服务,以查看是否已启动不应启动的主机头配置。在我的例子中,问题是我创建了到特定IP地址的IIS绑定,而不是“
*
”。绑定到“*
”后,一切都按预期进行。这对我来说很有效。非常感谢。这是我认为对400个错误请求有效的唯一方法。非常感谢您的回答。没问题,很高兴能对某人有所帮助:-)非常好的推荐信!我还必须在cmd中运行“netstart w3svc”才能让我的站点重新上线。