我正在尝试删除标准模式下 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/