我怎样才能完全抑制由我在 ASP.NET 中的自定义 HttpHandler 返回的 Cache-Control header 的输出?
我知道,我可以通过修改 response.Cache 和 response.Cache.SetCacheability 来更改 header 字段,但这只会更改 header 字段,而不会删除它。那不是我想要的。我完全不想对 Cache-Control 字段做任何假设,而是将其留给浏览器策略。
编辑:HttpResponse.Charset 也是如此。如果未设置字符集,ASP.NET 将始终将其设置为“utf-8”,尽管返回没有字符集参数的 header “Content-Type: text/html”是完全有效的 html。也知道如何抑制字符集吗?
最佳答案
您可以使用
删除 header 值HttpContext.Current.Response.Headers.Remove("HEADER-VALUE-HERE");
如果您使用的是 IIS7 集成管道,但是某些 header 值受到保护且无法删除(即它们在最常见的页面生命周期中处理响应后注入(inject))。
如果上述方法失败(即 protected ),您可以做一个模块来手动挂接到 PreSendRequestHeaders并在此时使用上面的代码删除 header 。
删除标题的大部分问题不是无法删除它,而是在正确的时间删除它。
我相信使用自定义的 http 处理程序你应该能够在处理程序的实例化时删除它。
关于asp.net - 在自定义 ASP.NET HttpHandler 响应中禁用缓存控制 header 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727858/