我们有一个Java Servlet,可以生成HTML页面供客户查看。在99.9%的情况下,这些页面在IE,Chrome,Firefox,Opera,Safari中打开,我们不测试其他浏览器,但它们也可能有效。
但是,他们很少会在Firefox中打开。
在Firebug中,这些是不起作用时返回的响应标头:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Tue, 24 Jul 2012 04:57:32 GMT
它仍可在同一台机器上的其他浏览器中使用,但刷新不会改变任何内容。
在HTTPServletResponse中,我们设置了以下标题:
rp.setHeader( "Content-Disposition", "example.html" );
rp.setContentType( "text/html" );
我们也习惯设定内容长度,但我在绝望的行为中把它拿出来。当我们设置内容长度时,就像这样:
final long size = getSize();
if (size > 0) {
rp.setHeader( "Content-Length", String.valueOf(size) );
}
然后打印到HttpServletResponse就像这样:
byte[] ab = new byte[ 4096 ];
int result = 0;
// Read from the BufferedOutputStream(buffer), and write to out(a ServletOutputStream).
while ( result != -1 ) {
result = buffer.read( ab, 0, 4096 );
if ( result != -1 ) {
if ( out == null ) {
out = rp.getOutputStream();
}
out.write( ab, 0, result );
}
}
以前有人遇到过这样的事吗?这让我疯狂。我无法想象这个代码有什么问题,因为它每天运行数百次而且在firefox中只有这么少失败,但它一定有问题,而且对于我的生活我无法弄清楚是什么。 / p>
抱歉,我无法展示这种奇怪的实例。
谢谢
安德鲁