diff --git a/index.js b/index.js index 1a509318..947094d7 100644 --- a/index.js +++ b/index.js @@ -641,6 +641,10 @@ function issecure(req, trustProxy) { return true; } + if (req.socket && req.socket.encrypted) { + return true; + } + // do not trust proxy if (trustProxy === false) { return false; diff --git a/test/session.js b/test/session.js index 46fed763..77b78a04 100644 --- a/test/session.js +++ b/test/session.js @@ -854,6 +854,21 @@ describe('session()', function(){ }); }); }); + + describe('when request socket is encrypted', function () { + it('should treat request as secure when connection is missing', function (done) { + function setup (req) { + req.connection = null + req.socket = { encrypted: true } + } + + request(createServer(setup, { cookie: { secure: true } })) + .get('/') + .expect(shouldSetCookieWithAttribute('connect.sid', 'Secure')) + .expect(200, done) + }) + }) + describe('when "sameSite" set to "auto"', function () { describe('basic functionality', function () { before(function () {