Chrome不会渲染分块的json响应

时间:2014-04-13 10:41:28

标签: node.js http http-headers http-streaming

我想创建一个持续发送json对象的流端点。我尝试使用分块传输编码,并且能够成功地使所有浏览器(chrome,firefox,safari)呈现从服务器发送的数据(如果它是text / html或text / plain)。但是当我使用application / json作为内容类型时,它不适用于chrome。这是代码:

var http = require('http');

http.createServer(function(request, response){
    response.setHeader('Connection', 'Transfer-Encoding');
    response.setHeader('Transfer-Encoding', 'chunked');
    response.setHeader('Cache-Control', 'no-cache');
    // response.setHeader('Content-Type', 'application/json');
    response.setHeader('Content-Type', 'text/html');


    setInterval(function(){     
        response.write('test </br>');   
         // response.write('{"test": "test"}');
    }, 10);

}).listen(8000);

上面的代码按预期工作,但不能使它适用于application / json类型。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

这是浏览器中的错误。它固定在最新的铬(至少在金丝雀)。

Chrome Bug - Transfer-Encoding chunked not support on text/plain

Safari(我已经在Mac OSX上测试过)是唯一没有使用分块编码呈现非html内容的浏览器。