出于测试目的,我想在浏览器中看到臭名昭着的错误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');
});
minimal python server也是如此。
此外,我有一个疯狂的想法,可能express
在设置内容长度时截断响应,但tcpdump
清楚地表明在客户端收到全身。
答案 0 :(得分:8)
看起来大多数客户端并不关心服务器是否发送的数据多于Content-Length
中所述的数据。但是,如果您发送 less 数据,并确保连接在服务器端关闭(客户端不会关闭它,因为它认为还有更多数据要来),您可以触发{{ 1}}:
net::ERR_CONTENT_LENGTH_MISMATCH
答案 1 :(得分:1)
我修复了设置server.keepAliveTimeout
的问题var httpsServer = https.createServer({
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem'),
ca: fs.readFileSync('intermediate.crt')
}, app).listen(port);
httpsServer.keepAliveTimeout = 60000 * 2;
httpsServer.listen(port);