Получить URL-адрес для клиента SockJS через объект window.location

Что-нибудь говорит против location.origin в этом контексте?

new SockJS(window.location.origin + ':1337/websockets');

Мои веб-сокеты работают по тому же URL-адресу, что и мой веб-сервер.


person messy    schedule 13.10.2015    source источник


Ответы (1)


Поскольку вы хотите другой порт и определение window.location.origin

Возвращает протокол, имя хоста и номер порта URL-адреса.

вы должны сделать это, чтобы убедиться, что вы получаете только протокол и имя хоста

new SockJS(window.location.protocol + '//' + window.location.hostname + ':1337/websockets');
person Ason    schedule 13.10.2015
comment
Будет ли порт 80 игнорироваться? В моем случае источник выглядит как http://172.17.22.24, а порт — это пустая строка. - person messy; 13.10.2015
comment
Поскольку вам нужен другой порт, а определение window.location.origin возвращает протокол, имя хоста и номер порта URL-адреса, вы должны использовать приведенное выше, чтобы убедиться, что вы получаете только протокол и имя хоста. - person Ason; 13.10.2015
comment
Если не задано, обычно порт 80 для веб-запроса, и в вашем случае он работает с использованием location.origin, но по определению это неправильно, когда вам нужен другой порт, и вы должны использовать правильный способ его получения, а не работающий в этом случае так как это может вызвать у вас проблемы позже. - person Ason; 13.10.2015
comment
Хорошо. Небольшое уведомление. window.location.protocol возвращает http:, поэтому нет необходимости добавлять :. - person messy; 13.10.2015
comment
Моя ошибка, пропустил это ... сразу же обновлю ответ ... готово! - person Ason; 13.10.2015