eat*_*ode 14 web-config kestrel-http-server asp.net-core asp.net-core-2.1
是否可以删除ASP.NET Core 2.1应用程序中的服务器响应标头(在带有IIS 10的Server 2016上运行)?
我尝试将以下内容放在web.config中:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="sameorigin" />
<add name="X-XSS-Protection" value="1; mode=block" />
<add name="X-Content-Type-Options" value="nosniff" />
<remove name="X-Powered-By" />
<remove name="Server" />
</customHeaders>
</httpProtocol>
</sytem.webServer>
Run Code Online (Sandbox Code Playgroud)
响应的前四个更改工作正常,但未删除Server标头.我还是看"红隼"
ric*_*888 22
在NET6中,它变成了
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseKestrel(option => option.AddServerHeader = false);
Run Code Online (Sandbox Code Playgroud)
use*_*336 18
Kestrel Server标头在请求管道中添加得太晚.因此,无法通过web.config或中间件删除它.
您可以通过设置删除Server头AddServerHeader属性来false上KestrelServerOptions,这可以在Program.cs中完成的.
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => options.AddServerHeader = false)
.UseStartup<Startup>();
Run Code Online (Sandbox Code Playgroud)
use*_*616 16
该解决方案适用于IIS 10+版本,并允许在服务器响应中删除x-powered-by和server标头。
在IIS 10中,添加了一个新属性:removeServerHeader。
我们需要web.config在asp.net核心应用程序中创建具有以下内容的文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后发布应用程序并在IIS上重新启动站点。
对于那些试图做同样事情(删除 Kestrel Web 服务器添加的服务器响应标头)但使用 ASP.NET 核心 2.2 的人,他们应该使用扩展方法ConfigureKestrel ( https://docs.microsoft.com/ en-us/dotnet/api/microsoft.aspnetcore.hosting.webhostbuilderkestrelextensions.configurekestrel?view=aspnetcore-2.2#Microsoft_AspNetCore_Hosting_WebHostBuilderKestrelExtensions_ConfigureKestrel_Microsoft_AspNetCore_Hosting_IWebHostBuilder_System_Action_Microsoft_AspNetCore_Kestrel_Kestrel_Microsoft_AspNetCore_Hosting_IWebHostBuilder_System_Action_Microsoft_AspNetCore_Server方法的扩展名改为使用__KestrelKestrel_Server方法的扩展名__Kestrel_Servers
对于 Dotnet Core 3.1UseKestrel是ConfigureWebHostDefaults与CreateDefaultBuilder早期版本相反的一部分。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.UseKestrel(options => options.AddServerHeader = false);
});
Run Code Online (Sandbox Code Playgroud)
这些说明仅适用于 IIS 10.0。
打开位于网站根目录中的 web.config 文件。
在 web.config system.webServer 节点中配置 requestFiltering:
<security>
<requestFiltering removeServerHeader ="true" />
</security>
Run Code Online (Sandbox Code Playgroud)
保存文件并重新启动 IIS 应用程序。
| 归档时间: |
|
| 查看次数: |
6658 次 |
| 最近记录: |