繁体   English   中英

当托管在Azure应用程序服务中时,如何控制添加到ASP.NET核心Web应用程序中的HTTP响应标头?

[英]How can I control the HTTP response headers added to my ASP.NET core web application when hosted in Azure app service?

我们已经编写了一个ASP.NET core 2.2 Web应用程序,该应用程序基本上公开了一些Web api控制器,并且我们使用ResponseCachingMiddleware来在我们的中间件管道中实现服务器端响应缓存。

我们遵循了此Microsoft指南,并决定添加HTTP响应标头Vary,以使来自应用程序的每个响应都包含以下标头: Vary: Accept-Encoding, Accept-Charset

如上面链接指南中所述,需要这样做,以便响应缓存遵守客户端请求标头,以便在且仅当它们与客户端请求兼容时才使用缓存的响应。

与邮递员进行测试时,我注意到,在Azure中部署应用程序时(我们使用了标准的Azure应用程序服务来执行此操作),Vary响应标头不是我期望的:似乎Azure本身添加了值Accept-Encoding以便Vary标头的值设置为Accept-Encoding, Accept-Charset,Accept-Encoding (这是应用程序设置的值和Azure会自动添加的值的组合)。

那就是我有几个问题:

  • 天蓝色主机是否真的增加了Accept-Encoding附加值?
  • 是否可以自定义Azure主机添加的HTTP标头(如果有)?
  • 是价值Accept-Encoding, Accept-Charset,Accept-Encoding为有效的值Vary头? 即使我们将值重复两次也能按预期工作吗?

托管在Azure应用程序服务(在Windows之一)ASP .NET的核心仍然使用IIS所概述这里 因此,您应该能够通过将web.config添加到项目中来控制标头。

这是一个外观示例,以及指向文档的链接

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM