我正尝试在标准模式下在Azure网站上托管的Web Api 2项目的响应中删除不需要的Cache-Control,Pragma和Expires HTTP标头。
我在 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请求才会删除标头,而不会删除HEAD或POST请求。
感谢任何建议!
答案 0 :(得分:1)
Azure网站支持请求过滤模块,因此您可以在web.config中执行此操作:
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="Cache-Control" />
<remove name="Pragma" />
<remove name="Expires" />
</customHeaders>
</httpProtocol>
</system.webServer>
免责声明:我不打算删除这些标头,这是HTTP协议的重要组成部分。
删除缓存标题对客户说“完全取决于您决定如何缓存此响应”,这可能会导致生产中出现奇怪且难以重现的错误。如果要禁用缓存,则应将这些标头设置为明确禁用缓存的值:
<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>