在不使用 web.config 的情况下抑制 .Net Core 网站中的 X-POWERED-BY 标头

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

我管理着几十个类似网站的集合,这些网站托管在 Windows 和 IIS 下运行的 Azure Web App 服务上。为了使事情易于管理并消除重复,它们的 Startup 和 Program 类都派生自一个通用的 Startup 和 Program 类。并且没有 web.config 文件。

它在每个响应中发送 X-POWERED-BY 标头。我想抑制这个。

我已经了解了如何使用 web.config 来抑制此问题,但我更不想这样做,因此我不必为每个站点提供一个 web.config。

在program.cs中,我将AddServerHeader设置为false,但X-Powered-By标头仍然发送。

.UseKestrel(option => option.AddServerHeader = false) // doesn't work

在startup.cs类中,我尝试删除Configure方法中的标头,但无济于事:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
    app.Use(async (context, next) =>
    {
        context.Response.Headers.Remove("X-Powered-By");
        await next();
    });   // doesn't work

在startup.cs类中,我还尝试在Configure方法中将标头设置为空字符串,同样无济于事:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
    app.Use(async (context, next) =>
    {
        context.Response.Headers["X-Powered-By"] = "";
        await next();
    });   // doesn't work

如何在不引入 web.config 文件的情况下抑制 X-Powered-By 标头?

azure asp.net-core azure-web-app-service web-config
1个回答
0
投票

在 .NET Core 8 和 9 的更高版本中添加标头仅适用于 Windows 中部署的应用程序。

  • Kestrel 的使用仅限于 Linux 应用服务中部署的应用程序。

Linux 应用程序:

enter image description here

还引用了此Doc并尝试使用 Middleware 类删除标头。

  • 无法删除标头,但允许添加/更新新标头。

enter image description here

感谢@Thomas Ardal的解释。

ASP.NET
核心将返回
X-Powered-By
标头。当您在 IIS 上托管网站时会发生这种情况。 您根本无法删除中间件中的标头,因为这对于
ASP.NET
Core 来说是无法控制的。
web.config
来救援:

Web.config
输出:

enter image description here

  • 默认情况下,
    Web.config
    文件将在应用程序根目录中创建。
  • 这里的问题是,一旦您重新部署应用程序,您从应用程序服务更新的设置将被删除。

另请参阅此博客了解更多详细信息。

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