gpt4 book ai didi

header - asp.net core 删除 X-Powered-By 不能在中间件中完成

转载 作者:行者123 更新时间:2023-12-03 21:40:16 25 4
gpt4 key购买 nike

为什么我不能删除 X-Powered-By 作为我正在执行的中间件的一部分?如果我把它放在 web.config 中,我可以删除它,但如果我把它放在中间件中,我就不能删除它。我正在删除中间件“服务器”中的另一个 header :“Kestrel”,它可以工作并告诉我我的中间件正在执行。

我使用的是 Visual Studio 2015、ASP.Net Core Web 应用程序(.NET Framework)、1.0.0-rc2-final

我的中间件

public class ManageHttpHeadersMiddleware
{
private RequestDelegate _next;

public ManageHttpHeadersMiddleware(RequestDelegate next)
{
_next = next;
}

public async Task Invoke(HttpContext context)
{
context.Response.OnStarting(() =>
{
context.Response.Headers.Remove("Server");
context.Response.Headers.Remove("X-Powered-By");

return Task.CompletedTask;
});

await _next(context);
}
}

我的 Startup.Configure 方法看起来像这样
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddSerilog(new LoggerConfiguration()
.ReadFrom.ConfigurationSection(Configuration.GetSection("Serilog"))
.CreateLogger())
.AddDebug();

app.UseMiddleware<ManageHttpHeadersMiddleware>();

app.UseJwtBearerAuthentication();

app.UseMvc();

app.UseSwaggerGen();
app.UseSwaggerUi();
}

所以我的问题是:
  • 是不是因为我执行中间件的顺序
    启动.配置?
  • 是不是因为我正在执行的事件
    中间件?我曾尝试使用 OnCompleted,但显然为时已晚,并且没有删除“服务器”:“Kestrel”
  • 是不是因为它
    由 Azure 中的 Kestrel 或 IIS 添加,删除的唯一方法是通过
    web.config ?

  • 我知道您可能会争辩说我有一个解决方法以及我的问题是什么,但是在相同的代码位置实现相同的要求会很好,以帮助可维护性等。

    最佳答案

    供您查询有关 X-Powered-By 的信息。你是对的,你必须做 web.config 文件。(当你使用 IIS 时),当任何这样的 header 通过服务器时,你必须手动或以不同的方式维护,因为这不是 ASP.net 核心的一部分。

    如果您了解我们托管时的 ASP.net 核心请求管道就像

  • 浏览器 - IIS - Kestrel (Windows)
  • 浏览 - NGinx - Kestrel (Linux)

  • 当任何请求被处理 Kestrel 时,它会移交给 IIS 或 Nginx,然后 IIS 或 NGInx 可能会添加 header 。 X-Powered-By 就是这样的标题。所以我们可以删除它 web.config 或直接在 IIS 设置中。

    注意:到目前为止,我觉得我们不会在旧的 ASP.net/ASP.net MVC 中获得任何这样的东西,我们在其中创建 HTTPModule 并且我们能够删除所有类型 header 。这是可能的,因为它与 IIS 紧密集成。

    注意:我已经发表了评论,但为了更清楚地说明我无法使用中间件删除服务器 header 。即使我试过你的代码。 (我已经尝试过使用 IIS)。

    要删除服务器 header ,我必须执行以下操作。
    new WebHostBuilder()
    .UseKestrel(c => c.AddServerHeader = false)

    关于header - asp.net core 删除 X-Powered-By 不能在中间件中完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39174888/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com