Java HttpServletResponse仅在Firefox中为空

时间:2012-07-24 05:52:11

标签: java firefox servlets tomcat6

我们有一个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>

抱歉,我无法展示这种奇怪的实例。

谢谢

安德鲁

0 个答案:

没有答案