IIS 7.0 - IIS 在缓存控制中添加“私有”,它来自哪里

2024-02-02

因为我们保护 .PDF 文件免受匿名用户的侵害,所以我们有一个自定义处理程序,因此我们有一个条目

我们还对 http 标头进行了更改,通过 IIS 7 管理添加“cache-control: no-cache,no-store”,该管理在 system.webserver 元素下创建 web.config 条目,如下所示:

<httpProtocol>

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

</httpProtocol>

当我在 burpsuite 会话中查看响应标头时,我看到 .aspx 页面:cache-control: no-store,no-cache,no-store

但对于 PDF 页面:

缓存控制:private,无缓存,无存储

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


尽管这篇文章已经有几年了,但我想我会分享我的解决方案,这可能会节省一些人的时间。

我有一个使用 IIS 的 MVC 4 站点设置,我的目标是让 IIS 添加标头到某些文件(由位置定义),方法是使用<customHeaders>部分。我在中的“缓存控制”值<customHeaders>部分被附加到“cache-control: private”的末尾,由 IIS 神奇地添加。

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

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

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

所以解决方案是将其设置为 false,并使用以下命令分别管理每个模块preCondition每个属性。

The runAllManagedModulesForAllRequests早期版本的 MVC 需要此设置,因为没有它,无扩展路由将无法工作。此问题现已修复,更多详细信息请参见此处

http://blogs.msdn.com/b/tmarq/archive/2010/04/01/asp-net-4-0-enables-routing-of-extensionless-urls-without-impacting-static-requests.aspx http://blogs.msdn.com/b/tmarq/archive/2010/04/01/asp-net-4-0-enables-routing-of-extensionless-urls-without-impacting-static-requests.aspx

关于使用的有用阅读runAllManagedModulesForAllRequests

http://weblog.west-wind.com/posts/2012/Oct/25/Caveats-with-the-runAllManagedModulesForAllRequests-in-IIS-78 http://weblog.west-wind.com/posts/2012/Oct/25/Caveats-with-the-runAllManagedModulesForAllRequests-in-IIS-78

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IIS 7.0 - IIS 在缓存控制中添加“私有”,它来自哪里 的相关文章

随机推荐