我们在使用window.open调用获取Word文档在IE7/IE8中下载时出现问题。这个问题目前仅在我们的生产环境中发生,且SSL启用 - 我们的测试环境正常工作,但未启用SSL。这两个环境都运行IIS6并使用集成身份验证。用window.open下载的Word文档没有打开(IE7/IE8)
的JavaScript是很简单:
function OpenNewWindow(sURL, sName, sHeight, sWidth)
{
var sFeatures = "top=40,left=190,toolbar=no,location=no,directories=no,menubar=no,scrollbars=yes,resizable=yes,status=no";
sFeatures = "width=" + sWidth + ",height=" + sHeight + "," + sFeatures;
var newWindow = window.open(sURL, sName, sFeatures);
newWindow.focus();
}
上述功能被传递相对路径,和页面本身(ASP.NET页面)是预格式化的HTML。该页面的代码隐藏功能将内容类型设置为“application/msword”,并允许ASP.NET将页面内容写入输出流。
当上述函数被调用时,会创建一个新窗口,然后立即关闭而没有任何错误或提示。据我所知(使用Fiddler)启用缓存并且HTTP压缩未启用。实际的文档内容被返回,但IE和Word之间似乎存在某种断开。
我注意到的一个古怪的问题是,在测试中存在一个协商挑战,并在生产过程中用Kerberos票据进行响应,而没有发生挑战/响应(尽管在开始页面上出现了一个,并且响应是NTLM )。另外,有问题的页面(Word文档)的直接链接确实可以在两种环境中正常工作。最后,取消选中.DOC文件类型的“确认后下载”选项可以成功打开文档(但不是我们愿意为2000多名员工开发的解决方案)。
我知道这是有限的信息,我可能需要添加更多的细节,但我花了一天的搜索/测试的更好的一部分,并没有更接近解决这个问题。任何帮助将不胜感激!
接头两个环境:
TEST请求(正常工作,没有SSL)
GET /webapps/gfcse/CSEPrint.aspx?mode=ReadOnly & sSurveyId = 3060 HTTP/1.1
接受: /
接受语言:EN-US
UA-CPU:86
接受编码:gzip,紧缩
的User-Agent:Mozilla的/ 4.0(兼容; MSIE 7.0;风新台币5.1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)
主机:pc55516svma
连接:保持活动
曲奇:ASP.NET_SessionId = elto5pakakvepbju42w24eef
授权:协商[剪断]
TEST响应
HTTP/1.1 200 OK
Cache-Control:private
Content-Length:26458
Content-Type:application/msword; charset = utf-8
服务器:Microsoft-IIS/6.0
X-Powered-by-ASP.NET
MicrosoftSharePointTeamServices:12.0.0。6421
WWW身份验证:协商[剪断]
X-ASPNET-版本:2.0.50727
日期:星期四,2010年7月8日15点14分26秒GMT
[文件内容]
生产请求(不工作,使SSL)
GET /gfcse/CSEPrint.aspx?mode=ReadOnly & sSurveyId = 3582 HTTP/1.1
接受:/
接受兰用户代理程序:Mozilla/4.0(兼容版本):en-us
UA-CPU:x86
接受编码:gzip,deflate
User- MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)
主机:intranet.gfnet.com
连接:保持活动
曲奇:ASP.NET_SessionId = h2xw0ebweb4e2455iab1tvbf
PRODUCTION响应
HTTP/1.1 200 OK
缓存控制:私人
内容长度:26438
内容类型:application/msword;字符集= UTF-8
服务器:Microsoft-IIS/6.0
MicrosoftSharePointTeamServices:12.0.0.6219
X供电,通过:ASP.NET
X-ASPNET-版本:2.0.50727
日期:周四,08 2010年7月15时07分41秒GMT
[文件内容]
@ user387121我从来没有用过ASP..but我严重怀疑它有什么用javascript和有更多做头正在发送:你见过这些网页: http://support.microsoft.com/kb/316431 http://www.robpoyntz.com/blog/?p=245 (是PHP,但标题的东西仍然适用)。 – Jack 2010-07-08 21:01:51
我以前见过微软的知识库文章,但没有看到PHP面向PHP的文章。 – 2010-07-09 12:18:57