diff --git a/lib/socket.io/client.js b/lib/socket.io/client.js index 43fb5acf61..fa470fe7c5 100644 --- a/lib/socket.io/client.js +++ b/lib/socket.io/client.js @@ -169,11 +169,19 @@ Client.prototype._generateSessionId = function(){ }; Client.prototype._verifyOrigin = function(origin){ - var parts = urlparse(origin), origins = this.listener.options.origins; - return origins.indexOf('*:*') !== -1 || - origins.indexOf(parts.host + ':' + parts.port) !== -1 || - origins.indexOf(parts.host + ':*') !== -1 || - origins.indexOf('*:' + parts.port) !== -1; + var origins = this.listener.options.origins; + if (origins.indexOf('*:*') !== -1) { + return true; + } + if (origin) { + try { + var parts = urlparse(origin); + return origins.indexOf(parts.host + ':' + parts.port) !== -1 || + origins.indexOf(parts.host + ':*') !== -1 || + origins.indexOf('*:' + parts.port) !== -1; + } catch (ex) {} + } + return false; }; for (var i in options) Client.prototype[i] = options[i]; diff --git a/lib/socket.io/transports/websocket.js b/lib/socket.io/transports/websocket.js index 1edaf00a4e..cd52142841 100644 --- a/lib/socket.io/transports/websocket.js +++ b/lib/socket.io/transports/websocket.js @@ -39,7 +39,7 @@ WebSocket.prototype._onConnect = function(req, socket){ } var origin = this.request.headers.origin, - location = (origin.substr(0, 5) == 'https' ? 'wss' : 'ws') + location = (origin && origin.substr(0, 5) == 'https' ? 'wss' : 'ws') + '://' + this.request.headers.host + this.request.url; if (this.draft == 76){