Какой из них является наиболее эффективным по сравнению с проверкой, осуществляет ли пользовательский агент доступ через правильный домен.
Мы хотели бы показать маленькое предупреждение на основе js в стиле 'top bar', если они получают доступ к домену через какой-то веб-прокси (так как он имеет тенденцию нарушать js).
Мы думали об использовании следующего:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
Это позаботится о любых поддоменах, которые мы когда-либо используем.
Какой нам следует использовать хост или имя хоста?
В Firefox 5 и Chrome 12:
console.log(location.host);
console.log(location.hostname);
.. показывает то же самое для обоих.
Это потому, что порт на самом деле не находится в адресной строке?
W3Schools говорит, что хост содержит порт.
Следует ли проверять location.host/hostname или мы можем быть уверены в IE6 + и во всех остальных, он будет существовать?
Ответы:
В качестве небольшой заметки: анатомия интерактивной ссылки
-
Вкратце (при условии местоположения
http://example.org:8888/foo/bar#bang
):hostname
дает тебеexample.org
host
дает тебеexample.org:8888
источник
:
и порта. Интересно, сколько обсуждения еще доступно с моментаlocation.host
его формулирования ... Я подозреваю, что сегодня оно названо так, потому что никто из присутствующих не читал и не думал упомянуть этот RFC.хост просто включает номер порта, если он указан. Если в URL нет номера порта, он возвращает то же самое, что и имя хоста. Вы выбираете, хотите ли вы соответствовать номеру порта или нет. См. Https://developer.mozilla.org/en/window.location для получения дополнительной информации.
Я предполагаю, что вы хотите, чтобы имя хоста просто получало имя сайта.
источник
Если вы настаиваете на использовании
window.location.origin
Вы можете поместить это в верхней части вашего кода, прежде чем читатьorigin
Решение
PS: для протокола, это был фактически оригинальный вопрос. Это было уже отредактировано :)
источник
window.location.origin
в своем вопросе. На самом деле их вопрос касался вещей, которых нетwindow.location.origin
.Ваш основной вопрос был дан ответ выше. Я просто хотел указать, что у используемого вами регулярного выражения есть ошибка. Это также будет успешным,
foo-domain.com
что не является поддоменомdomain.com
То, что вы действительно хотите, это:
источник
MDN: https://developer.mozilla.org/en/DOM/window.location
Кажется, что вы получите один и тот же результат для обоих, но
hostname
содержит ясное имя хоста без скобок или номера порта.источник
Просто добавьте примечание, что браузер Google Chrome имеет атрибут источника для местоположения. который дает вам весь домен от протокола до номера порта, как показано на скриншоте ниже.
источник