diff --git a/services/web/app/coffee/infrastructure/RedirectManager.coffee b/services/web/app/coffee/infrastructure/RedirectManager.coffee index d4a9dd7c9a..d2a9f4b5cc 100644 --- a/services/web/app/coffee/infrastructure/RedirectManager.coffee +++ b/services/web/app/coffee/infrastructure/RedirectManager.coffee @@ -11,6 +11,7 @@ module.exports = RedirectManager = createRedirect: (target) -> (req, res, next) -> + return next() if req.headers?['x-skip-redirects']? code = 302 if typeof target is 'string' url = target diff --git a/services/web/test/acceptance/coffee/RedirectUrlsTests.coffee b/services/web/test/acceptance/coffee/RedirectUrlsTests.coffee index 8dd4fdb1c1..e6ed784962 100644 --- a/services/web/test/acceptance/coffee/RedirectUrlsTests.coffee +++ b/services/web/test/acceptance/coffee/RedirectUrlsTests.coffee @@ -33,6 +33,12 @@ describe "RedirectUrls", -> it 'redirects with query params', (done) -> assertRedirect 'get', '/redirect/qs?foo=bar&baz[]=qux1&baz[]=qux2', 302, '/destination/qs?foo=bar&baz[]=qux1&baz[]=qux2', done + it "skips redirects if the 'skip-redirects' header is set", (done) -> + request.get {url: '/redirect/one', headers: {'x-skip-redirects': 'true'}}, (error, response) -> + should.not.exist error + response.statusCode.should.equal 404 + done() + it 'redirects to /sign_in_to_v1 with authWithV1 setting', (done) -> assertRedirect( 'get',