diff --git a/History.md b/History.md index e7b48d5a..bdc023f3 100644 --- a/History.md +++ b/History.md @@ -1,3 +1,8 @@ +3.x +=== + + * Include ETag in HEAD requests + 3.8.1 / 2014-05-27 ================== diff --git a/lib/response.js b/lib/response.js index b7ec7ae5..76eab72e 100644 --- a/lib/response.js +++ b/lib/response.js @@ -137,7 +137,7 @@ res.send = function(body){ // ETag support // TODO: W/ support - if (app.settings.etag && len && 'GET' == req.method) { + if (app.settings.etag && len && ('GET' == req.method || 'HEAD' == req.method)) { if (!this.get('ETag')) { this.set('ETag', etag(body)); } diff --git a/test/app.head.js b/test/app.head.js index 41e12916..9ba2ad9a 100644 --- a/test/app.head.js +++ b/test/app.head.js @@ -16,6 +16,29 @@ describe('HEAD', function(){ .head('/tobi') .expect(200, done); }) + + it('should output the same headers as GET requests', function(done){ + var app = express(); + + app.get('/tobi', function(req, res){ + // send() detects HEAD + res.send('tobi'); + }); + + request(app) + .get('/tobi') + .expect(200, function(err, res){ + if (err) return done(err); + var headers = res.headers; + request(app) + .get('/tobi') + .expect(200, function(err, res){ + if (err) return done(err); + assert.deepEqual(res.headers, headers); + done(); + }); + }); + }) }) describe('app.head()', function(){