我有一个网络应用程序,当单击链接时,它会打开一个新的浏览器窗口(使用 window.open)。第一次打开窗口时,它仍然是空的。该调用是对报告生成器的调用,这将返回一个 PDF 文档。
如果第二次单击链接或刷新新窗口,则会显示正确的内容。
这只发生在生产服务器上的 IE(我使用的是 IE8)中,而不是测试服务器上。
我使用 HttpAnalyser 来检查流量,但我无法发现不同场景之间的任何差异。
这是脚本
var url = "http://myserver/webapps/birt/run?__title=MMS Report&__report=Report/" + report + "&__lc=en&__format=pdf&__runtime=prod&";
var chk = document.getElementById('chkPageBreak');
if(chk && chk.checked) url += "PageBreak=true&";
if(params) {
params = params.replace('%MMSFAIRID%', '25');
params = params.replace('%LANGUAGE%', 'en');
}
url += params;
birturl = url;
birtwin = window.open(url,'MMSBIRT', 'menubar=0,location=0,toolbar=0,resizable=1,status=1,scrollbars=1');
为什么会发生这种情况?我能做些什么来防止它?
谢谢!
更新
这是请求
GET /webapps/birt/run
?__title=MMS%20Report
&__report=Report/emosBuildStaffGrouped.rptdesign
&__lc=en
&__format=pdf
&__runtime=prod
&MmsFairId=25
&Language=en
&Inland=false
这是回复
HTTP/1.1 200 OK
Date: Mon, 16 Jul 2012 12:30:31 GMT
Server: IBM_HTTP_Server
Content-Disposition: inline; filename="emosBuildStaffGrouped.pdf"
Set-Cookie: JSESSIONID=xxxxxxxxxxxxx:-1; Path=/
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Cache-Control: no-cache="set-cookie, set-cookie2"
Keep-Alive: timeout=10, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/pdf
Content-Language: de-DE
刚刚引起我注意的是奇怪的 Expires 值。1994?!?不知道那是从哪里来的。当我刷新页面时,没有收到 Set-Cookie 也没有收到 Expires....