【发布时间】:2021-05-06 10:13:07
【问题描述】:
我的应用部署在 azure 应用服务上。我的服务器的响应包括以下 HTTP 标头
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
我想从我的回复中永久排除。
问题如下。我尝试了三件事
-
web.config 文件的变化
<?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 上时,我又得到了标头。
-
更改 Startup.cs 文件
app.Use(async (context, next) => { context.Response.Headers.Remove("Server"); context.Response.Headers.Remove("X-Powered-By"); await next(); });
这会在 localhost 中产生相同的结果,但在部署时会得到相同的标头。
-
编写中间件
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>();
这也会产生相同的结果,在 localhost 中可以,但是当部署到 azure 时会得到相同的标头。 我不是 azure/cloud 专家,但也许 azure 有什么需要改变的?
【问题讨论】:
-
似乎符合 azure 的直接指导.. azure.microsoft.com/en-us/blog/… - 你确定部署准确吗?
-
尝试删除 CORS 标头最终可能会导致问题..
-
@NeoXX 有什么更新吗?我的回复对你有帮助吗?
标签: c# azure asp.net-core http-headers azure-web-app-service