Как проверить с помощью javascript, если соединение является локальным хостом?
Я хочу проверить свой javascript, если загрузка страницы происходит на моей локальной машине.
причина, по которой я хочу это сделать, заключается в том, что при разработке мне нравится убедиться, что обе мои проверки на стороне сервера(C#) работают правильно. Поэтому мне нравится видеть как ошибки на стороне клиента, так и на стороне сервера.
поэтому, пока я тестирую, у меня есть флаг в моем jquery validate, который просто всегда пропускает недопустимые данные. Таким образом, я вижу клиентскую сторону и ошибки сервера на одном дыхании.
однако прямо сейчас я должен вручную перейти и изменить назад и вперед при переходе от разработки к производству.
7 ответов:
The
location.hostname
переменная дает вам текущий хост. Этого должно быть достаточно для вас, чтобы определить, в какой среде вы находитесь.if (location.hostname === "localhost" || location.hostname === "127.0.0.1") alert("It's a local server!");
при запуске статического html в браузере, например, из такого места, как
file:///C:/Documents and Settings/Administrator/Desktop/
обнаружение "localhost" не будет работать.location.hostname
возвращает пустую строку. так чтоif (location.hostname === "localhost" || location.hostname === "127.0.0.1" || location.hostname === "") alert("It's a local server!");
простой способ сделать это-просто проверить имя хоста против localhost или проверить свое пользовательское доменное имя против подстроки, в этом случае ".локальные " URL-адреса, такие как http://testsite.местные
var myUrlPattern = '.local'; if (window.location.hostname === "localhost" || location.hostname === "127.0.0.1" || window.location.hostname.indexOf(myUrlPattern) >= 0) { alert("It's a local server!"); }
все еще не улов все, но это может быть немного лучше. Теперь вы можете создать массив доменов и использовать .включает в себя
const LOCAL_DOMAINS = ["localhost", "127.0.0.1", ...]; if (LOCAL_DOMAINS.includes(window.location.hostname)) alert("It's a local server!");
Вы можете обнаружить в одном из ваших кода за страницами с c#, как это:
if ((Request.Url.Host.ToLower() == "localhost")) { // ..., maybe set an asp:Literal value that's in the js }
или если вы хотите сделать это из клиентского скрипта, вы можете проверить значение window.местоположение.хозяин.
if (window.location.host == "localhost") { // Do whatever }
надеюсь, что это помогает.
приведенные выше ответы в основном решают проблему, но...
- что делать, если localhost не обязательно 'localhost/'?
- что делать, если вы хотите сделать проверку FE во время разработки?
- что делать, если вы хотите другое поведение во время dev
(проверка Fe, быть проверка, нет проверки)одним из решений является установка хэша местоположения и проверка оно.
http://myname.foo.com/form.html#devValidation
вы можете добавить неограниченное количество опций с помощью переключателя
switch(location.hash) {} case '#devValidation': // log the results and post the form break; case '#beValidation': // skip front end validation entirely break; case '#noValidation': // skip all validation $('[name=validationType']).val('novalidation'); break; case '#feValidation': default: // do fe validation break; }