From 5c46e4b75415863f22c8e9b9140743c724ecaba8 Mon Sep 17 00:00:00 2001 From: Tobias Bieniek Date: Mon, 15 Feb 2016 15:43:14 +0100 Subject: [PATCH] Remove "transfer-encoding" header if "content-length" is set to zero --- lib/http-proxy/passes/web-incoming.js | 1 + test/lib-http-proxy-passes-web-incoming-test.js | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/lib/http-proxy/passes/web-incoming.js b/lib/http-proxy/passes/web-incoming.js index 4070eb316..af28546b3 100644 --- a/lib/http-proxy/passes/web-incoming.js +++ b/lib/http-proxy/passes/web-incoming.js @@ -32,6 +32,7 @@ web_o = Object.keys(web_o).map(function(pass) { if((req.method === 'DELETE' || req.method === 'OPTIONS') && !req.headers['content-length']) { req.headers['content-length'] = '0'; + delete req.headers['transfer-encoding']; } }, diff --git a/test/lib-http-proxy-passes-web-incoming-test.js b/test/lib-http-proxy-passes-web-incoming-test.js index cf9bf6b75..6ca63d398 100644 --- a/test/lib-http-proxy-passes-web-incoming-test.js +++ b/test/lib-http-proxy-passes-web-incoming-test.js @@ -22,6 +22,18 @@ describe('lib/http-proxy/passes/web.js', function() { webPasses.deleteLength(stubRequest, {}, {}); expect(stubRequest.headers['content-length']).to.eql('0'); }); + + it('should remove `transfer-encoding` from empty DELETE requests', function() { + var stubRequest = { + method: 'DELETE', + headers: { + 'transfer-encoding': 'chunked' + } + }; + webPasses.deleteLength(stubRequest, {}, {}); + expect(stubRequest.headers['content-length']).to.eql('0'); + expect(stubRequest.headers).to.not.have.key('transfer-encoding'); + }); }); describe('#timeout', function() {