gpt4 book ai didi

asp.net - 无法使用 PreSendRequestHeaders() 覆盖 IIS 中的 http 缓存 header

转载 作者:行者123 更新时间:2023-12-01 02:42:35 24 4
gpt4 key购买 nike

历史:
出于安全考虑,我们的组织希望通过向 IIS 添加 HTTP header 来禁用缓存。

过期:-1
Pragma:无缓存
缓存控制:无缓存,无存储

添加这些 header 会导致 MIME “ application/vnd.ms-excel ”响应类型故障转移 SSL IE6 . Microsoft 承认这是一个错误 (http://support.microsoft.com/kb/323308),他们的解决方案也有效。但是,该解决方案必须作为补丁推广到整个组织,并且面临更高管理层的抵制。

问题:
同时,我们试图通过使用 覆盖 MIME 类型为“application/vnd.ms-excel”的页面的 IIS 设置 HTTP header 来寻找替代方案。 HTTP 模块 PreSendRequestHeaders() 功能

//this is just a sample code
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += new EventHandler(context_PreSendRequestHeaders);

}
protected void context_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
if(application.Response.ContentType == "application/vnd.ms-excel; name=DataExport.xls")
{
application.Response.ClearHeaders();
application.Response.ContentType = "application/vnd.ms-excel; name=DataExport.xls";
application.Response.AddHeader("Content-Transfer", "Encoding: base64");
application.Response.AddHeader("Content-Disposition", "attachment;filename=DataExport.xls");
application.Response.AddHeader("cache-control","private");
}
}

即使在使用 ClearHeaders() 清除 header 后,IIS 仍会在发送响应之前附加缓存 header 。

问题:
这种在 PreSendRequestHeaders() 函数中使用 ClearHeaders() 的方法是否错误?
它们是否可以使用 ASP.NET 1.1 中可用的库来覆盖缓存 header (Expires、Pragma、缓存控制)?

杂项:
我们正在使用
浏览器:IE6 SP 3
服务器:IIS 6
平台:.NET 1.1

最佳答案

在 IIS 7.5+ 中使用 URL Rewrite extention 会变得更容易。并添加出站规则以去除 Cache-Control header 和 Pragma header 中的“no-store”值。这个规则集可以解决问题:

<outboundRules>
<rule name="Always Remove Pragma Header">
<match serverVariable="RESPONSE_Pragma" pattern="(.*)" />
<action type="Rewrite" value="" />
</rule>
<rule name="Remove No-Store for Attachments">
<conditions>
<add input="{RESPONSE_Content-Disposition}" pattern="attachment" />
</conditions>
<match serverVariable="RESPONSE_Cache-Control" pattern="no-store" />
<action type="Rewrite" value="max-age=0" />
</rule>
</outboundRules>

关于asp.net - 无法使用 PreSendRequestHeaders() 覆盖 IIS 中的 http 缓存 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7799807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com