如何使用快递获取Chrome中的net :: ERR CONTENT LENGTH MISMATCH

sha*_*unc 2 google-chrome http content-length node.js express

出于测试目的,我想在浏览器中看到臭名昭着的错误net::ERR CONTENT LENGTH MISMATCH.但问题是我不知道如何.Naïve试图通过错误Content-Length似乎没有工作 - 所有客户端只是截断内容(顺便说一下 - 它是一些成熟的,RFC记录的行为?).

这是您可以尝试的代码:

var express = require('express');
var app = express();

app.get('/ping', function (req, res) {
  res.set({
    'Content-Length': 7,  
  }); 

  // don't use res.send, 
  //it will ignore explicitly set Content-Length in favor of the right one
  res.write('ABCDEFGHIJKLMNOP');
  res.end();
})

app.listen(3000, function () {
  console.log('http://127.0.0.1:3000');
});
Run Code Online (Sandbox Code Playgroud)

最小的python服务器也是如此.此外,我有一个疯狂的想法,可能会express在设置内容长度时截断响应,但tcpdump清楚地表明在客户端收到全身.

rob*_*lep 8

看起来大多数客户端并不关心服务器是否发送的数据多于此处所述的数据Content-Length.但是,如果您发送的数据较少,并确保连接在服务器端关闭(客户端不会关闭它,因为它认为还有更多数据要来),您可以触发net::ERR_CONTENT_LENGTH_MISMATCH:

app.get('/ping', function (req, res) {
  res.set({ 'Content-Length': 70 });
  res.write('ABCDEFGHIJKLMNOP');
  res.end();
  res.connection.end();
})
Run Code Online (Sandbox Code Playgroud)