【问题标题】:Unable to download files from SSL encrypted webpage in IE8+ - can't modify headers in ASP.NET无法从 IE8+ 中的 SSL 加密网页下载文件 - 无法修改 ASP.NET 中的标头
【发布时间】:2012-02-26 09:35:45
【问题描述】:

我很难让网页正常工作,但真的可以提供一些帮助。该页面通过启用 SSL 的 IIS 7 提供。在它上面,用户可以下载一个 .rtf 文件或多个 .rtf 文件的 .zip。这在 FF 和 Chrome 中工作得非常好,但是一旦引入 IE,最终用户就会收到一个带有以下错误的弹出窗口:

无法打开此 Internet 站点。请求的站点不可用 或找不到。请稍后再试。

使用 Fiddler,我可以看到标头的 Cache-Control 设置为 No-cache,并且 Pragma 也设置为 no-cache。根据几个论坛和博客,这会导致 IE 不允许从该页面下载文件。

我曾尝试像这样更改 ASP.NET 代码隐藏中的标头:

Response.AppendHeader("Pragma", "public");
Response.AppendHeader("Cache-Control", "must-revalidate, 
    post-check=0, pre-check=0");
Response.AppendHeader("Cache-Control", "public");

还有这个:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(TimeSpan.FromMinutes(1));
Response.Cache.SetValidUntilExpires(true);

这些都不起作用。标头仍设置为无缓存。

然后我尝试通过 IIS HTTP 响应标头模块向网站添加自定义标头修改,但这也不起作用。

This thread 接近回答我的问题,但没有说明他们如何能够重写标题。

我将非常感谢你们在我拔掉我剩下的头发时给我的任何帮助。

【问题讨论】:

  • 尝试:Response.CacheControl = "public",或 Response.CacheControl = "private"
  • 不幸的是,这也不起作用。标头仍然以“Cache-Control: no-cache”的形式出现

标签: asp.net iis-7 http-headers


【解决方案1】:

这是我遇到的同一问题的链接。除了我有一个.pdf。它实际上适用于所有静态文件类型。

IE8 and client side caching

【讨论】:

  • 从上面发布的第二个代码块可以看出,我已经尝试在我的代码中使用 SetCacheability 和 SetMaxAge 方法。但是它们不起作用。那是我的问题。无论我在代码隐藏中放入什么,我都无法更改标题。
  • 我很好奇您的 web.config 中是否有任何用于缓存的内容,或者可能是 httphandler/httpmodule。这些调用绝对应该重写标题。这里还有其他东西在起作用。
  • 感谢您的这个想法。该站点在 DotNetNuke 上运行。管理员将整个站点的主机设置设置为无缓存。我不知道 DNN 做到了这一点。再次感谢。
【解决方案2】:

已经回答了,但我想我会添加另一个对我有帮助的答案。

因为您使用的是 IIS 7,所以您可以使用

Response.Headers.Remove("Pragma")

删除 Pragma 标头。 AppendHeader 方法不会覆盖任何预先存在的标头,包括其他 Pragma 标头,因此“Pragma: no-cache”仍然存在。现在,使用 IIS 7,您可以将其删除。

如果您没有 IIS 7,或者您的本地计算机配置为运行 IIS 6,即使您像我的一样有可用的 IIS 7,您也会收到“此操作需要 IIS 集成管道模式”异常。只要确保你运行的是 IIS 7,你就会很好。

【讨论】:

    猜你喜欢
    • 2012-04-03
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2019-06-15
    • 2011-04-17
    • 1970-01-01
    相关资源
    最近更新 更多