swagger: honour X-Forwarded-Proto header
Improve the algorithm building `baseUrl` to honour `X-Forwarded-Proto` header when it is present.
This commit is contained in:
parent
d18d64b41d
commit
a4179e454a
|
@ -166,9 +166,9 @@ function addRoute(app, uri, doc, opts) {
|
|||
if (hasBasePath) {
|
||||
var headers = req.headers;
|
||||
// NOTE header names (keys) are always all-lowercase
|
||||
var proto = headers['x-forwarded-proto'] || opts.protocol || req.protocol;
|
||||
var host = headers['x-forwarded-host'] || headers.host;
|
||||
doc.basePath = (opts.protocol || req.protocol) + '://' +
|
||||
host + initialPath;
|
||||
doc.basePath = proto + '://' + host + initialPath;
|
||||
}
|
||||
res.status(200).send(doc);
|
||||
});
|
||||
|
|
|
@ -93,6 +93,18 @@ describe('swagger definition', function() {
|
|||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('respects X-Forwarded-Proto header (behind a proxy)', function(done) {
|
||||
var app = givenAppWithSwagger();
|
||||
getAPIDeclaration(app, 'products')
|
||||
.set('X-Forwarded-Proto', 'https')
|
||||
.end(function(err, res) {
|
||||
if (err) return done(err);
|
||||
var baseUrl = url.parse(res.body.basePath);
|
||||
expect(baseUrl.protocol).to.equal('https:');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Model definition attributes', function() {
|
||||
|
|
Loading…
Reference in New Issue