我有一个送分块响应每隔几两秒钟下列头测试节点服务器:浏览器不处理如Firefox分块响应,Safari浏览器
response.setHeader('Content-Type', 'text/plain')
response.setHeader('Transfer-Encoding', 'chunked')
每两秒钟,我写出来的回应:
response.write('Hello World');
当我做端点上的卷曲,我得到一大块回每两秒钟:
Hello World
(wait two seconds)
Hello World
(wait two seconds)
Hello World
它可以像卷曲一样工作。
对于我在客户端的Javascript,我建立了一个新的XMLHttpRequest
并指定了一个函数来打印出responseText
的onprogress
事件。 这里是实现在不同浏览器中的不同之处。
在Firefox和Safari中,我收到类似于卷曲时的行为。每个“Hello World”都会触发一个进展事件。
在Chrome中,只有在接收到所有组块后才会触发onprogress事件,并在服务器端执行response.end()
。当我尝试打印出responseText
时,只打印出一个空字符串。
这里是客户端代码的样子:
var xhr = new XMLHttpRequest()
xhr.onprogress = function() {
// Firefox, Safari prints out an accumulation of the chunks
// Chrome prints out an empty string
console.log(xhr.responseText);
}
很好的问题! – 2016-01-03 13:27:19