diff --git a/lib/Server.js b/lib/Server.js index b2fb6ec7be..4bf57bc5c4 100644 --- a/lib/Server.js +++ b/lib/Server.js @@ -24,6 +24,22 @@ const webpackDevMiddleware = require('webpack-dev-middleware'); const OptionsValidationError = require('./OptionsValidationError'); const optionsSchema = require('./optionsSchema.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; + } + }; +} + const clientStats = { errorDetails: false }; const log = console.log; // eslint-disable-line no-console