iis - 从 Azure 中的 Web Api 中删除缓存 HTTP 响应 header

标签 iis azure http-headers

我正在尝试删除标准模式下 Azure 网站上托管的 Web Api 2 项目的响应中不需要的 Cache-Control、Pragma 和 Expires HTTP header 。

我在Global.asax Application_PreSendRequestHeaders中尝试了以下操作:

var headers = ((HttpApplication)sender).Context.Response.Headers;
headers.Remove("Cache-Control");
headers.Remove("Pragma");
headers.Remove("Expires");

这在 Visual Studio 中调试时有效。但在 Azure 上,仅删除 GET 请求的 header ,而不删除 HEAD 或 POST 请求的 header 。

感谢您的建议!

最佳答案

Azure 网站支持请求过滤模块,因此您可以在 web.config 中执行此操作:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <remove name="Cache-Control" />
      <remove name="Pragma" />
      <remove name="Expires" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

免责声明:我不同意删除这些 header ,它们是 HTTP 协议(protocol)的重要组成部分。

删除缓存 header 对客户端来说“完全由您决定如何缓存此响应”,这可能会导致生产中出现奇怪且难以重现的错误。如果您想禁用缓存,您应该将这些 header 设置为显式禁用缓存的值:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Cache-Control" value="no-cache" />
      <add name="Pragma" value="no-cache" />
      <add name="Expires" value="-1" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

关于iis - 从 Azure 中的 Web Api 中删除缓存 HTTP 响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21906223/

相关文章:

http - HTTP header XSS漏洞如何利用?

php - 先解析php再解析asp.net

azure - 在计时器上运行 Azure Web 作业

asp.net - IIS 8 - 500 服务器错误日志

azure - 在缩小 Azure Kubernetes 服务 (AKS) 中的节点后如何重新安排我的 pod?

azure - Visual Studio Online 摩纳哥在哪里?

xml - 如何使用 REBOL 发送带有自定义 header 的 HTTP post

http - 由于来自服务器的 mime 不正确,无法使用 Go 打开 Zip

iis - AWS Beanstalk IIS 实例和强制 SSL

asp.net - SignalR 未触发 "disconnected"事件