Iis 7 IIS 7.0-IIS添加了;“私人”;要缓存控制,这是从哪里来的

Iis 7 IIS 7.0-IIS添加了;“私人”;要缓存控制,这是从哪里来的,iis-7,web-config,http-headers,browser-cache,Iis 7,Web Config,Http Headers,Browser Cache,因为我们保护.PDF文件不被匿名用户访问,所以我们有一个自定义处理程序,所以我们有一个条目 我们还对http头进行了更改,通过IIS 7管理添加了“缓存控制:无缓存,无存储”,该管理在system.webserver元素下创建web.config条目,如下所示: <httpProtocol> <customHeaders> <clear /> <add name="cache-control" value="no-cache,no

因为我们保护.PDF文件不被匿名用户访问,所以我们有一个自定义处理程序,所以我们有一个条目

我们还对http头进行了更改,通过IIS 7管理添加了“缓存控制:无缓存,无存储”,该管理在system.webserver元素下创建web.config条目,如下所示:

<httpProtocol>

  <customHeaders>
    <clear />
    <add name="cache-control" value="no-cache,no-store" />
  </customHeaders>

</httpProtocol>

当我在burpsuite会话中查看响应头时,会看到.aspx页面:缓存控制:无存储、无缓存、无存储

但对于PDF页面:

缓存控制:专用、无缓存、无存储


我的目标是让一切都“没有缓存,没有存储”。我不确定我错过了什么。web.config中没有其他缓存设置。请告知如何从PDF页面中删除“private”,以及如何从其他页面中删除extra no store。其他通过System.Web.StaticFileHandler的静态页面,它们也有“无存储,无缓存,无存储”。

我无法告诉您为什么IIS 7会在缓存控件中添加“private”,但我可以在我自己的基于ASHX的直通代理中向您展示我是如何摆脱它的(请参阅原始帖子下面的第一条评论)


如果您在VisualStudio中使用内置的Cassini web开发服务器,这将不起作用。要处理标题,您需要在开发环境中切换到成熟的IIS Web服务器。

虽然这篇文章已经发表了几年,但我想我会与大家分享我的解决方案,这可能会让一些人省去几个小时的挠头

我有一个使用IIS的MVC4站点设置,我的目标是让IIS使用
部分向某些文件(按位置定义)添加标题。我在
部分中的“cache control”值被附加到“cache control:private”的末尾,IIS神奇地添加了这些值

这是因为my web.config中的runAllManagedModulesForAllRequests设置被设置为true

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
</system.webServer>

此设置导致一个IIS模块(我不知道是哪个)将“缓存控制”头附加到从IIS请求的每个文件

因此,解决方案是将其设置为false,并使用每个模块上的
premission
属性分别管理每个模块

早期版本的MVC需要runAllManagedModulesForAllRequests设置,因为没有它,无扩展路由将无法工作。这已经被修复,更多细节在这里

有关使用runAllManagedModulesForAllRequests的有用阅读


Ha,我正准备问一个类似的问题。我已经构建了自己的pass-through proxy.ashx类,该类实现了IHttpHandler。我只希望我的代理通过源于托管RESTful API的实际服务器的头。使用Fiddler,我注意到了同样的事情。IIS7正在管道中的某处添加“私有”缓存控制成员。
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
</system.webServer>