Jam*_*mes 6 middleware header asp.net-core
为什么我不能删除X-Powered-By作为我正在执行的中间件的一部分?如果我放入web.config,我可以删除它,但如果我把它放在中间件中,我可以删除它.我正在删除中间件"服务器"中的另一个标头:"Kestrel",它工作并告诉我我的中间件正在执行.
我正在使用Visual Studio 2015,ASP.Net核心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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的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();
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
我知道你可以说我有一个解决方法,我的问题是什么,但在相同的代码位置实现相同的要求,以帮助可维护性等等会很好.
dot*_*tep 13
有关X-Powered-By的查询.你是必须的,你必须这样做web.config文件.(当你使用IIS时)和任何这样的头任何服务器你必须手动维护或不同,因为这不是ASP.net核心的一部分.
如果您了解ASP.net核心请求管道时我们主持它就好
当任何请求处理Kestrel然后它移交给IIS或Nginx然后IIS或NGInx可能添加标头.X-Powered-By就是这样的标题.所以我们可以将其删除web.config或直接在IIS设置中删除.
注意:截至目前,我觉得我们不会在旧的ASP.net/ASP.net MVC中获得任何这样的东西,我们在其中创建HTTPModule并且我们能够删除所有类型的头文件.那是可能的,因为它与IIS紧密集成.
注意:我已经发表评论,但为了更清楚地说明我无法使用中间件删除服务器标头.即使我尝试了你的代码.(我试过IIS).
要删除Server标头,我必须做以下事情.
new WebHostBuilder()
.UseKestrel(c => c.AddServerHeader = false)
Run Code Online (Sandbox Code Playgroud)
我们可以X-Powered-By在web.net中删除和其他标题,因为它在asp.net核心中再次添加
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5137 次 |
| 最近记录: |