我们编写了一个ASP.NET core 2.2 Web应用程序,该应用程序基本上公开了一些Web api控制器,并且我们使用ResponseCachingMiddleware来在中间件管道中实现服务器端响应缓存。
我们遵循this Microsoft guide,我们决定添加HTTP响应标头Vary,以便来自应用程序的每个响应都包含以下标头:Vary: Accept-Encoding, Accept-Charset
。
需要这样做(如上面链接的指南所述),以便响应高速缓存接受客户端请求标头,以便在且仅当它们与客户端请求兼容时才使用高速缓存的响应。
与邮递员进行测试我注意到,在Azure中部署应用程序时(我们使用标准的Azure App Service进行此操作),我不希望使用Vary响应标头:似乎Azure本身会添加值{{ 1}},以便将Vary标头的值设置为Accept-Encoding
(这是我们的应用程序设置的值和Azure会自动添加的值的组合)。
那是我有几个问题:
Accept-Encoding, Accept-Charset,Accept-Encoding
? Accept-Encoding
是Accept-Encoding, Accept-Charset,Accept-Encoding
标头的有效值吗?即使我们将值重复两次也能按预期工作吗?答案 0 :(得分:2)
在Azure App Service(Windows上)上托管ASP .NET Core仍使用IIS,概述为here。因此,您应该可以通过将web.config添加到项目中来控制标头。
以下是示例,以及文档中的link,
<configuration>
<system.web>
<httpRuntime enableVersionHeader="false" /> <!-- Removes ASP.NET version header. Not needed for Ghost running in iisnode -->
</system.web>
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" /> <!-- Removes Server header in IIS10 or later and also in Azure Web Apps -->
</security>
<httpProtocol>
<customHeaders>
<clear /> <!-- Gets rid of the other unwanted headers -->
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
<redirectHeaders>
<clear />
</redirectHeaders>
</httpProtocol>