IE:无法从*下载*。 无法打开此Internet站点。 请求的网站不可用或无法find
我的网站和IE有问题。 我有一个文件Document.ashx成为从我的数据库中的文档取决于在查询string中传递的参数。
该文件工作如果:
- 你在我的网站上,点击下载链接。
- 您可以访问我网站上的任何内容,并将该url粘贴到地址栏中并进行访问。
- 您之前已经访问过文档链接,即使它出错了。
在以下情况下不起作用:
- 您尚未打开当前的IE浏览器访问我的网站,并将链接粘贴到地址栏中。 它显示以下错误:
Windows Internet Explorer
无法从MyHostName下载Document.ashx。
无法打开此Internet站点。
请求的网站不可用或无法find。
请稍后再试。
有没有人有线索会导致这一点。 自然,它在Firefox中工作正常。
我在办公室里找了好几个人用IE浏览器试试,他们都遇到同样的问题。 他们都说它在Firefox中起作用。
就像rymo所说的设置Cache-Control: private
,如果你的响应头碰巧有Pragma :no-cache
,你也必须把它改成Pragma: token
。
根据David在这里提供的KB文章( 通过SSL下载Internet Explorer文件不能与caching控制头一起工作 ) ,我们将输出头从Cache-Control: no-cache
改为Cache-Control: private
。 这似乎解决了IE8的问题,而不影响其他浏览器。 小心使用Cache-Control: no-store
。
事实certificateIE8可以接受完全禁用的caching,但是对于标题的确切顺序是非常挑剔的。 所以,而不是回到private
(这允许某些caching,可能不符合您的安全需求)使用:
Cache-Control: no-store, no-cache, must-revalidate
当按照确切的顺序指定时 – 首先no-store
然后no-cache
– IE8将允许文件下载没有错误。 还要确保Pragma
头没有设置。
这个问题发生在IE8以及可能更早的版本中,但在IE9 +中解决。 关于通过SSL下载文件。
要解决我的应用程序中的问题,我不得不添加以下两个标头下载(用PHP编写):
header("Cache-Control: private"); header("Pragma: cache");
这听起来像我的问题,我只是与IE 8交叉。 当我追踪解决scheme时,我遇到了两个解决scheme。 其中之一应该纠正这个问题。
只是为了让你知道这是在客户端机器上的修复,因为它是如何IE编码导致的问题。
修复: http : //support.microsoft.com/kb/815313 http://support.microsoft.com/kb/323308
有什么大惊小怪的? 这个问题是由于立即caching过期或无caching。
执行以下操作来解决问题:
转到server system -> Run Inetmgr -> RightClick and properties on the folder(eg images) -> httpHeaders ->
现在或者取消选中启用内容过期 ,或检查后过期,并给1分钟。
这是为IIS 5。
IIS 6/7会有类似的设置。
快乐编程!
我有同样的问题,并通过尝试所有上述方法来纠正它,感到沮丧。 很明显,我不想在客户端机器上完成一个解决scheme,所以我只是从头中删除“Pragma”参数,它开始很好地工作。 问题解决了。
如果你使用asp.net。 删除集合caching的代码
评论以下内容
Response.Clear(); Response.Buffer = true; Response.Charset = ""; **//Response.Cache.SetCacheability(HttpCacheability.NoCache);** Response.ContentType = contentType; Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName); Response.BinaryWrite(bytes); Response.Flush(); Response.End();
我们在www.Qiqqa.com的ClickOnce部署中embedded了相同的问题。 我怀疑它与IE获取application/octet-stream
时所执行的“MIMEtypes嗅探”有关 – 我想要保护用户免受恶意内容的侵害。
无论如何,为了解决这个问题,我们将.deploy
文件的MIMEtypes改为text/plain
– 显然不是很理想,但是同时我也不知道我们的.deploy
文件服务器,用户将浏览到ClickOnce之外。
问题解决了。
dynamic创buildiframe,将src设置为下载页面的loaction,追加到正文。
function downloadInIFrame(fileId) {
var url = "download.aspx?fileId=" + fileId;
var iframe = document.createElement("iframe");
iframe.src = url;
iframe.style.display = "none";
document.body.appendChild(iframe);
}
这些代码适合我。
如果你做'保存目标为…'或打开新标签,它工作正常。 但仍然在IE8中发生错误。 我有相同的实现…创build具有iframe的div(display:none),并将其附加到body,并将src设置为其内容types为application / binary的frame。
我们在使用带有NoCache
标签的MVC控制器的IE8上也遇到了同样的问题。 这设置在IE中打破文件下载的Response.Cache.SetNoStore
。
要解决 – 你可以通过reflection重置Http Cache Policy 。
此问题是由Internet Explorer中的浏览器设置引起的。 在Internet Explorer中,转至Tools
> options
> Advanced options
。 在标记为“ 安全性”的部分中,find并清除“不将encryption的页面保存到磁盘” 。