我管理着几十个类似网站的集合,这些网站托管在 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 标头?
在 .NET Core 8 和 9 的更高版本中添加标头仅适用于 Windows 中部署的应用程序。
Linux 应用程序:
还引用了此Doc并尝试使用 Middleware 类删除标头。
感谢@Thomas Ardal的解释。
核心将返回ASP.NET
标头。当您在 IIS 上托管网站时会发生这种情况。 您根本无法删除中间件中的标头,因为这对于X-Powered-By
Core 来说是无法控制的。ASP.NET
来救援:web.config
用
Web.config
输出:
Web.config
文件将在应用程序根目录中创建。另请参阅此博客了解更多详细信息。