From f97564772698f6b05124c83125ddeccd2321333b Mon Sep 17 00:00:00 2001 From: simov Date: Sat, 24 Oct 2015 09:20:17 +0300 Subject: [PATCH] Improve referer header tests and docs --- README.md | 2 +- tests/test-redirect.js | 24 ++++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c18b022ab..17859c933 100644 --- a/README.md +++ b/README.md @@ -762,7 +762,7 @@ The first argument can be either a `url` or an `options` object. The only requir - `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`). This property can also be implemented as function which gets `response` object as a single argument and should return `true` if redirects should continue or `false` otherwise. - `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`) - `maxRedirects` - the maximum number of redirects to follow (default: `10`) -- `removeRefererHeader` - removes the referer header when a redirect happens (default: `false`). +- `removeRefererHeader` - removes the referer header when a redirect happens (default: `false`). **Note:** if true, referer header set in the initial request is preserved during redirect chain. --- diff --git a/tests/test-redirect.js b/tests/test-redirect.js index d27040b3d..882e4398e 100644 --- a/tests/test-redirect.js +++ b/tests/test-redirect.js @@ -332,7 +332,7 @@ tape('http to https redirect', function(t) { }) }) -tape('should have the referer when following redirect by default', function(t) { +tape('should have referer header by default when following redirect', function(t) { request.post({ uri: s.url + '/temp', jar: jar, @@ -344,12 +344,11 @@ tape('should have the referer when following redirect by default', function(t) { t.end() }) .on('redirect', function() { - t.notEqual(this.headers.referer, undefined) - t.equal(this.headers.referer.substring(this.headers.referer.lastIndexOf('/')), '/temp') + t.equal(this.headers.referer, s.url + '/temp') }) }) -tape('should not have a referer when removeRefererHeader is true', function(t) { +tape('should not have referer header when removeRefererHeader is true', function(t) { request.post({ uri: s.url + '/temp', jar: jar, @@ -366,6 +365,23 @@ tape('should not have a referer when removeRefererHeader is true', function(t) { }) }) +tape('should preserve referer header set in the initial request when removeRefererHeader is true', function(t) { + request.post({ + uri: s.url + '/temp', + jar: jar, + followAllRedirects: true, + removeRefererHeader: true, + headers: { cookie: 'foo=bar', referer: 'http://awesome.com' } + }, function(err, res, body) { + t.equal(err, null) + t.equal(res.statusCode, 200) + t.end() + }) + .on('redirect', function() { + t.equal(this.headers.referer, 'http://awesome.com') + }) +}) + tape('should use same agent class on redirect', function(t) { var agent var calls = 0