C# 因阻止动词命中导致HTTP 500出现时披露的服务器版本
我已经设置了自定义错误页面和动词阻塞,只允许GET和POST。 但当我尝试其他方法(删除、选项、跟踪)时,它并没有重定向到自定义错误页面,而且它也公开了服务器版本。HTTP 200中未披露服务器版本 错误页面处理-:C# 因阻止动词命中导致HTTP 500出现时披露的服务器版本,c#,security,iis,web-config,C#,Security,Iis,Web Config,我已经设置了自定义错误页面和动词阻塞,只允许GET和POST。 但当我尝试其他方法(删除、选项、跟踪)时,它并没有重定向到自定义错误页面,而且它也公开了服务器版本。HTTP 200中未披露服务器版本 错误页面处理-: <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="Redirect" > <remove statusCode="500" subStatusCode
<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="Redirect" >
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="404" path="SSPERR.aspx" responseMode="Redirect"/>
<error statusCode="500" path="SSPERR.aspx" responseMode="Redirect"/>
</httpErrors>
protected void Application_PreSendRequestHeaders(object sender, EventArgs
{
HttpContext.Current.Response.Headers.Remove("Server");
HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");
}
好的。我发现了一个问题:
您忘记了删除错误404,但再次添加并复制了。由于这个原因,应用程序在异常中抛出异常,并且无法正确删除头。
现在你可以看到一切了。我还提供了一个简单的html文件用于错误页面。所以error.html会更好
这也添加到web.config中。仍然显示服务器版本。我修复了它。请现在再次检查。服务器版本现在不会公开。但现在它抛出404错误,但没有重定向到错误页面。它在设置responseMode=“Redirect”后重定向
protected void Application_PreSendRequestHeaders(object sender, EventArgs
{
HttpContext.Current.Response.Headers.Remove("Server");
HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");
}