我正在为Web应用程序构建一些测试,并且我想测试客户端正常处理无效HTTP响应的能力。您如何建议修改响应,使其不再有效?我试过以下但是Express显然后来修复了Content-Length
:
app.get('/broken/', function(req, res) {
console.log('request received for ' + req.path);
res.set('Content-Length', 0).send('more than zero');
});
编辑:要注意,我不一定控制传入的请求。在过去,其中一些是无效的。
答案 0 :(得分:1)
确实,Express
会在response.send方法中重置Content-Length
。
if (chunk !== undefined) {
len = chunk.length;
this.set('Content-Length', len);
}
基本上,send
只会设置一堆标题并将其余工作委托给http.ServerResponse.end。
为了绕过此行为,您可以直接使用end
方法。
app.get('/broken/', function(req, res) {
res.set('Content-Length', 0)
.set('Content-Type', type);
.end('more than zero');
});
答案 1 :(得分:1)
我认为正确的答案(即使你可以解决它)是不使用HTTP客户端。任何HTTP客户端都会努力阻止您进行无效的HTTP调用。因此,正确的答案是制作一个故意不符合要求的HTTP客户端,这意味着您需要深入研究编写tcp套接字。即使这意味着这并不完全适合您的测试框架,我认为您只需要一次测试。