Asp.Net MVC5 - 如何从静态元素响应(例如 svg 文件)中删除 ,,Server" 标头

问题描述 投票:0回答:1

我正在尝试从 asp.net mvc5 应用程序中的标头响应中删除服务器信息。我向应用程序添加了以下代码,它负责大多数服务器响应:

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    HttpContext.Current.Response.Headers.Remove("Server");
}

我试图解决的问题是当服务器返回静态数据(例如 img 元素的图标)时,例如我有以下代码:

 <img src="~/Content/images/my_super_logo.svg" alt="super-app"/>

它会生成并向我返回以下来自服务器的响应:

请求网址:http://localhost:51989/Content/images/my_super_logo.svg 响应标头:服务器:Microsoft-IIS/10.0

我正在寻找任何允许我在获取静态数据时控制服务器标头的解决方案。我可以在 Global.asax.cs 文件中过滤其他内容吗?

security asp.net-mvc-5 response-headers
1个回答
0
投票

我认为您可以将一些中间件放入静态文件托管之后运行的 asp.net 响应堆栈中,但我不确定这是否实用 - 当 ASP.NET 想要执行操作时将其放在正确的位置它的方式很棘手,添加中间件也不是那么容易。

但是,您可以在网络上运行 Kestrel 并将其隐藏在另一个向其传递请求的网络服务器后面(为了安全起见)。如果您使用 nginx,您可以轻松地从响应中删除标头,如果您设置正确的标头(x-accel-redirect),您还可以直接通过 nginx 提供这些静态文件。

© www.soinside.com 2019 - 2024. All rights reserved.