kim*_*ura 2 javascript ajax google-chrome xmlhttprequest node.js
我有一个测试节点服务器,每隔两秒发送一次带有以下标头的分块响应:
response.setHeader('Content-Type', 'text/plain')
response.setHeader('Transfer-Encoding', 'chunked')
Run Code Online (Sandbox Code Playgroud)
每隔两秒,我就会写下回复:
response.write('Hello World');
Run Code Online (Sandbox Code Playgroud)
当我在端点上执行卷曲时,我每两秒就会收到一个块:
Hello World
(wait two seconds)
Hello World
(wait two seconds)
Hello World
Run Code Online (Sandbox Code Playgroud)
它的工作原理就像在卷曲中应该的那样。
对于客户端的 Javascript,我设置了一个新的函数XMLHttpRequest并分配了一个函数来打印该responseText事件的函数onprogress。这是不同浏览器的实现似乎有所不同的地方。
在 Firefox 和 Safari 中,我得到与卷曲时类似的行为。每个“Hello World”都会触发一个 onprogress 事件。
在 Chrome 中,仅当收到所有块并且我response.end()在服务器端执行 a 时,才会触发 onprogress 事件。当我尝试打印出 时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);
}
Run Code Online (Sandbox Code Playgroud)
Chrome 和 IE 都“嗅探”数据(我认为是前 256 个字节)以检测 mime 类型。使用它来禁用该行为:
response.setHeader('X-Content-Type-Options', 'nosniff');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2059 次 |
| 最近记录: |