如何使用 express 在 Chrome 中获取 net::ERR 内容长度不匹配
How to get net::ERR CONTENT LENGTH MISMATCH in Chrome using express
出于测试目的,我想在浏览器中看到臭名昭著的错误 net::ERR CONTENT LENGTH MISMATCH
。但问题是我不知道怎么做。天真的尝试传递错误 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
清楚地表明在客户端收到了整个主体。
看起来大多数客户端并不关心服务器发送的数据是否多于 Content-Length
中规定的数据。但是,如果您发送 less 数据,并确保连接在服务器端关闭(客户端不会关闭它,因为它认为还有更多数据要发送),您可以触发器 net::ERR_CONTENT_LENGTH_MISMATCH
:
app.get('/ping', function (req, res) {
res.set({ 'Content-Length': 70 });
res.write('ABCDEFGHIJKLMNOP');
res.end();
res.connection.end();
})
我修复了设置 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);
出于测试目的,我想在浏览器中看到臭名昭著的错误 net::ERR CONTENT LENGTH MISMATCH
。但问题是我不知道怎么做。天真的尝试传递错误 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
清楚地表明在客户端收到了整个主体。
看起来大多数客户端并不关心服务器发送的数据是否多于 Content-Length
中规定的数据。但是,如果您发送 less 数据,并确保连接在服务器端关闭(客户端不会关闭它,因为它认为还有更多数据要发送),您可以触发器 net::ERR_CONTENT_LENGTH_MISMATCH
:
app.get('/ping', function (req, res) {
res.set({ 'Content-Length': 70 });
res.write('ABCDEFGHIJKLMNOP');
res.end();
res.connection.end();
})
我修复了设置 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);