From 1dfd4fbe0c3ac8d25aa381231cb92b3ed805c8da Mon Sep 17 00:00:00 2001 From: "Masahiro Miyashiro (3846masa)" <3846masahiro@gmail.com> Date: Mon, 24 Dec 2018 18:56:56 +0900 Subject: [PATCH] fix: add workaround for Origin header in sockjs (#1608) --- lib/Server.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/Server.js b/lib/Server.js index 50e8d553ff..d76af59010 100644 --- a/lib/Server.js +++ b/lib/Server.js @@ -43,6 +43,22 @@ const createCertificate = require('./utils/createCertificate'); const validateOptions = require('schema-utils'); const schema = require('./options.json'); +// Workaround for sockjs@~0.3.19 +// sockjs will remove Origin header, however Origin header is required for checking host. +// See https://github.com/webpack/webpack-dev-server/issues/1604 for more information +{ + // eslint-disable-next-line global-require + const SockjsSession = require('sockjs/lib/transport').Session; + const decorateConnection = SockjsSession.prototype.decorateConnection; + SockjsSession.prototype.decorateConnection = function(req) { + decorateConnection.call(this, req); + const connection = this.connection; + if (connection.headers && !('origin' in connection.headers) && 'origin' in req.headers) { + connection.headers.origin = req.headers.origin; + } + }; +} + // Workaround for node ^8.6.0, ^9.0.0 // DEFAULT_ECDH_CURVE is default to prime256v1 in these version // breaking connection when certificate is not signed with prime256v1