Wie überprüfe ich mit Javascript, ob die Verbindung ein lokaler Host ist?

Lesezeit: 4 Minuten

Benutzer-Avatar
Chobo2

Ich möchte in meinem Javascript überprüfen, ob sich die geladene Seite auf meinem lokalen Computer befindet.

Der Grund, warum ich das tun möchte, ist, dass ich bei der Entwicklung sicherstellen möchte, dass meine serverseitige (C#) Validierung korrekt funktioniert. Daher möchte ich, dass sowohl auf der Clientseite als auch auf der Serverseite Fehler angezeigt werden.

Während ich also teste, habe ich ein Flag in meinem Jquery-Validierungsmaterial, das ungültige Daten einfach immer passieren lässt. Auf diese Weise sehe ich die Client- und Serverfehler auf einmal.

Im Moment muss ich jedoch manuell hin und her wechseln, wenn ich von der Entwicklung zur Produktion gehe.

  • Ich möchte jeden, der eine dieser Methoden in einer dieser Antworten verwendet, nur davor warnen, dem System Funktionen “hinzuzufügen”, insbesondere wenn diese Funktionen verwendet werden könnten, um ansonsten sichere Informationen oder Daten in Ihrem System verfügbar zu machen. Die Verwendung dieser Technik zum “Entfernen” von Funktionalität ist jedoch sinnvoll. Zum Beispiel, wenn Sie die Nachverfolgung von Feueranalysen in Ihrer Entwicklungsumgebung unterdrücken möchten, obwohl Sie dies in Ihrer Produktionsumgebung tun. Denken Sie nur sorgfältig darüber nach, was Sie durch eine browserseitige Bedingung oder Umschaltung preisgeben und wie es zu einer Sicherheitslücke werden könnte.

    – Javid Jamae

    2. April 2018 um 4:58 Uhr

Benutzer-Avatar
Unicron

Das location.hostname Variable gibt Ihnen den aktuellen Host. Das sollte ausreichen, um festzustellen, in welcher Umgebung Sie sich befinden.

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

  • Gibt es keine allgemeinere / “allgemeine” Lösung, die auch Fälle der Verwendung von 127.0.0.1 usw. abdeckt?

    – Jacobq

    10. Oktober 2012 um 18:21 Uhr

  • Das ist einfach falsch. Viele Leute bearbeiten ihre Host-Datei so, dass das Wort „localhost“ nicht gefunden wird

    – vsync

    1. August 2013 um 18:57 Uhr

  • Ich stimme zu. Das ist falsch. Funktioniert auch nicht beim Zugriff auf eine “lokale” Datei über ein Netzlaufwerk.

    – ProblemsOfSumit

    13. August 2013 um 14:59 Uhr

  • @Sumit Über die Dateischnittstelle können Sie überprüfen, ob der Hostname leer ist

    – chacham15

    22. Januar 2015 um 21:08 Uhr

  • Uhh nicht sicher, warum jeder dies als falsch bezeichnet. Dieser einfache Ausschnitt funktioniert perfekt für mich auf localhost und Produktion. Meine Software kennt das Wetter, um Anzeigen zu schalten – oder auch nicht, mit einer einfachen Codezeile. Danke OP.

    – Andy

    17. März 2017 um 20:33 Uhr

Benutzer-Avatar
Thomas Bujnowski

beim Starten von statischem HTML im Browser, z. B. von Ort wie file:///C:/Documents and Settings/Administrator/Desktop/ Das Erkennen von “localhost” funktioniert nicht. location.hostname wird eine leere Zeichenfolge zurückgeben. Also

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

  • Ich bin auf genau dieses Problem gestoßen und obwohl ich die Lösung selbst gefunden habe, sollte diese Antwort immer noch weiter oben stehen.

    – Domson

    14. März 2017 um 10:48 Uhr

Benutzer-Avatar
Daniele Bertella

Immer noch kein Catch-All, aber es könnte eine kleine Verbesserung sein. Sie können jetzt ein Array von Domänen erstellen und verwenden .beinhaltet

const LOCAL_DOMAINS = ["localhost", "127.0.0.1", ...];

if (LOCAL_DOMAINS.includes(window.location.hostname))
  alert("It's a local server!");

  • WARNUNG: „.includes“ wird in IE11 nicht unterstützt

    – Dänisch Adelel

    4. August 2021 um 7:06 Uhr

So wird es eingecheckt Reagieren, Servicemitarbeiter registriereneine gute Möglichkeit, um zu überprüfen, ob Sie sich auf localhost befinden, indem Sie den Hostnamen überprüfen, einschließlich lokaler Host und IPv6und der Abgleich beginnt mit 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}$/
    )
);

Kürzeste Form mit derselben Mechanik wie andere Skripte:

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

  • WARNUNG: „.includes“ wird in IE11 nicht unterstützt

    – Dänisch Adelel

    4. August 2021 um 7:06 Uhr

Benutzer-Avatar
Holtwick

Dieser behandelt auch einige häufige Fälle, in denen lokale Netzwerk-IPs beginnen 10.0. oder 192.168. oder Bonjour-ähnliche Domain mit der Endung auf .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'))
  )
}

  • WARNUNG: „.includes“ wird in IE11 nicht unterstützt

    – Dänisch Adelel

    4. August 2021 um 7:06 Uhr

Benutzer-Avatar
Vorliebe

const LOCAL_DOMAINS = [ "localhost", "127.0.0.1" ];

/* offline || development */
if ( LOCAL_DOMAINS.includes(location.hostname) )
{
    BASE_URL_PUBLIC = location.hostname + "/folder/website/"; // your project folder
}

/* online || production */
else
{
    BASE_URL_PUBLIC = location.hostname;
}

1257560cookie-checkWie überprüfe ich mit Javascript, ob die Verbindung ein lokaler Host ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy