我們在使用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