From 9488c83366f5543cacf6e3cfbfa15d8389d713b7 Mon Sep 17 00:00:00 2001 From: Brian Delahunty Date: Thu, 13 Nov 2014 14:31:04 -0800 Subject: [PATCH] Ensure that query strings are included during the http-https transition. --- package.json | 6 +++++- src/index.js | 2 +- test/index.js | 16 +++++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 3139576..33be75c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hapi-require-https", - "version": "1.0.0", + "version": "1.0.1", "description": "hapi http -> https redirection for servers behind a reverse proxy", "main": "./src", "scripts": { @@ -18,6 +18,10 @@ "heroku" ], "author": "Ben Drucker (http://www.bendrucker.me/)", + "contibutors": [{ + "name": "Brian Delahunty", + "email": "brian@briandela.com" + }], "license": "MIT", "bugs": { "url": "https://github.com/bendrucker/hapi-require-https/issues" diff --git a/src/index.js b/src/index.js index ffba0b6..ccecf81 100644 --- a/src/index.js +++ b/src/index.js @@ -4,7 +4,7 @@ exports.register = function (plugin, options, next) { plugin.ext('onRequest', function (request, next) { if (request.headers['x-forwarded-proto'] === 'http') { return next('Redirecting to https') - .redirect('https://' + request.headers.host + request.path) + .redirect('https://' + request.headers.host + request.url.path) .code(301); } next(); diff --git a/test/index.js b/test/index.js index 6e62c88..ece9a8c 100644 --- a/test/index.js +++ b/test/index.js @@ -39,6 +39,20 @@ describe('hapi-require-https', function () { }); }); + it('redirects requests where x-forwarded-proto is http and includes query string', function (done) { + server.inject({ + url: '/?test=test&test2=test2', + headers: { + host: 'host', + 'x-forwarded-proto': 'http' + } + }, function (response) { + expect(response.statusCode).to.equal(301); + expect(response.headers.location).to.equal('https://host/?test=test&test2=test2'); + done(); + }); + }); + it('ignores all other requests', function (done) { server.inject({ url: '/', @@ -53,4 +67,4 @@ describe('hapi-require-https', function () { }); }); -}) +});