Hoe controleer ik met javascript of de verbinding een lokale host is?

Ik wil mijn javascript laten controleren of de pagina die wordt geladen op mijn lokale computer staat.

De reden waarom ik dat wil doen, is dat ik bij het ontwikkelen ervoor wil zorgen dat zowel mijn server-side (C#) validatie correct werkt. Dus ik zie graag zowel de client- als de server-side fouten verschijnen.

Dus terwijl ik aan het testen ben, heb ik een vlag in mijn jQuery valideer dingen die altijd ongeldige gegevens doorlaat. Op deze manier zie ik de client- en serverfouten in één keer.

Op dit moment moet ik echter handmatig heen en weer gaan als ik van ontwikkeling naar productie ga.


Antwoord 1, autoriteit 100%

De variabele location.hostnamegeeft je de huidige host. Dat zou genoeg moeten zijn om te bepalen in welke omgeving je je bevindt.

if (location.hostname === "localhost" || location.hostname === "127.0.0.1")
    alert("It's a local server!");

Antwoord 2, autoriteit 14%

als het starten van statische html in de browser, bijv. vanaf een locatie zoals file:///C:/Documents and Settings/Administrator/Desktop/zal het detecteren van “localhost” niet werken. location.hostnameretourneert een lege string. dus

if (location.hostname === "localhost" || location.hostname === "127.0.0.1" || location.hostname === "")
    alert("It's a local server!");

Antwoord 3, autoriteit 4%

Nog steeds niet alles, maar het kan een kleine verbetering zijn.
U kunt nu een reeks domeinen maken en gebruiken. omvat

const LOCAL_DOMAINS = ["localhost", "127.0.0.1", ...];
if (LOCAL_DOMAINS.includes(window.location.hostname))
  alert("It's a local server!");

Antwoord 4, autoriteit 3%

Zo wordt het ingecheckt in Reageer, registreer servicemedewerker, een goede manier om te controleren of u zich op localhost bevindt door de hostnaam te controleren, inclusief localhosten IPv6, en overeenkomsten beginnen met 127:

const isLocalhost = Boolean(
    window.location.hostname === 'localhost' ||
    // [::1] is the IPv6 localhost address.
    window.location.hostname === '[::1]' ||
    // 127.0.0.1/8 is considered localhost for IPv4.
    window.location.hostname.match(
        /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
    )
);

Antwoord 5, autoriteit 3%

Kortste vorm met hetzelfde mechanisme als andere scripts:

if ( ["localhost", "127.0.0.1", ""].includes(window.location.hostname) ) {
     console.log("It's local host !");
}

Antwoord 6, autoriteit 2%

Deze behandelt ook enkele veelvoorkomende gevallen waarin lokale netwerk-IP’s beginnen met 10.0.of 192.168.of Bonjour-achtig domein dat eindigt op .local:

export function isLocalNetwork(hostname = window.location.hostname) {
  return (
    (['localhost', '127.0.0.1', '', '::1'].includes(hostname))
    || (hostname.startsWith('192.168.'))
    || (hostname.startsWith('10.0.'))
    || (hostname.endsWith('.local'))
  )
}

Antwoord 7

Een gemakkelijke manier om dit te doen is door de hostnaam te vergelijken met localhost of uw aangepaste domeinnaam te vergelijken met een substring, in dit geval “.local” urls, zoals http://testsite.local

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!");
}

Other episodes