我的应用程序部署在Azure应用服务上。服务器响应包含以下HTTP头:
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
我是一名中文翻译助手,以下是关于IT技术的翻译内容。请注意保留HTML标签。
我希望永久地从我的回复中排除下列内容。
问题如下。我尝试了三件事情:
Changes in web.config file
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By" /> <remove name="Server" /> <remove name="Access-Control-Allow-Origin" /> </customHeaders> </httpProtocol> <security> <requestFiltering removeServerHeader="true" /> </security> </system.webServer> </configuration>
当我在本地主机上运行我的应用程序并发出请求时,我没有得到上述标头,但是当我将其部署在Azure上时,我再次获取了这些标头。
Change Startup.cs file
app.Use(async (context, next) => { context.Response.Headers.Remove("Server"); context.Response.Headers.Remove("X-Powered-By"); await next(); });
这会在本地环境下产生相同的结果,但是在部署时会得到相同的头信息。
Write middleware
public async Task InvokeAsync(HttpContext context) { context.Response.Headers.Remove("Server"); context.Response.Headers.Remove("X-Powered-By"); await _next(context); } app.UseMiddleware<HttpMiddleware>(); app.UseAuthentication(); app.UseMiddleware<RequestLoggingMiddleware>();