From a903d654da40f7a842f18a5a7ac3ea7b94cf7d09 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Tue, 4 Feb 2020 19:28:03 +0800 Subject: [PATCH] fix: followup of #4985, allow same-site ws requests of any domain --- packages/@vue/cli/lib/ui.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/@vue/cli/lib/ui.js b/packages/@vue/cli/lib/ui.js index e5a2180183..33ecb72872 100644 --- a/packages/@vue/cli/lib/ui.js +++ b/packages/@vue/cli/lib/ui.js @@ -2,6 +2,17 @@ const { log, error, openBrowser } = require('@vue/cli-shared-utils') const { portfinder, server } = require('@vue/cli-ui/server') const shortid = require('shortid') +function simpleCorsValidation (allowedHost) { + return function (req, socket) { + const { host, origin } = req.headers + const hostRegExp = new RegExp(`${host}|${allowedHost}|localhost`) + + if (!origin || !hostRegExp.test(origin)) { + socket.destroy() + } + } +} + async function ui (options = {}, context = process.cwd()) { const host = options.host || 'localhost' @@ -69,12 +80,7 @@ async function ui (options = {}, context = process.cwd()) { } }) - httpServer.on('upgrade', (req, socket) => { - const { origin } = req.headers - if (!origin || !(new RegExp(host)).test(origin)) { - socket.destroy() - } - }) + httpServer.on('upgrade', simpleCorsValidation(host)) } module.exports = (...args) => {