Start · Sprachen · JavaScript · Referenz · URL.host

URL.host

Eigenschaft

Liest oder setzt den Host einer URL, also <code>hostname</code> plus <code>:port</code>, falls ein Port angegeben ist, der nicht der Standardport ist.

seit JavaScript Baseline: alle modernen Browser, Node.js 10+ (glob Kategorie: webapi

Signatur

URL.host

Beschreibung

Die Eigenschaft host eines URL-Objekts enthält den Hostnamen (hostname). Ist in der URL ein Port angegeben, folgen ein Doppelpunkt und der Port (port). Beispiel: Bei https://api.example.com:8443/v1 liefert host den Wert "api.example.com:8443". Hat die URL keinen Host (etwa bei data:- oder mailto:-URLs), ist der Wert ein leerer String.

Die Eigenschaft kann gelesen und geschrieben werden. Beim Schreiben wird der neue Wert als Host geparst. Enthält er einen Port, wird auch port aktualisiert. Enthält er keinen Port, bleibt der bisherige Port unverändert. Ungültige Werte werden stillschweigend ignoriert, es gibt also keine Ausnahme.

In der Praxis brauchen Sie host, wenn Sie Hostname und Port gemeinsam betrachten wollen. Typische Fälle sind die Prüfung, ob ein Link zur eigenen Anwendung gehört, das Umschreiben von URLs auf eine andere Umgebung (z. B. von Produktion auf localhost:3000) oder das Protokollieren von Zielservern. Wenn der Port keine Rolle spielt, nehmen Sie hostname. Für Sicherheitsprüfungen ist origin meist die bessere Wahl, weil diese Eigenschaft auch das Schema enthält.

Parameter

Name Typ Default Beschreibung
$value string Nur beim Schreiben: neuer Host, wahlweise mit Port, z. B. "example.org" oder "localhost:3000". Ungültige Werte werden ignoriert.

Rückgabewert

Typ
string
Beschreibung
Hostname, gefolgt von :port, falls ein Port gesetzt ist, der nicht der Standardport ist. Bei URLs ohne Host ist der Wert ein leerer String. IPv6-Adressen stehen in eckigen Klammern, internationale Domainnamen erscheinen in Punycode.

Beispiele

Host auslesen, mit und ohne Port

const api = new URL('https://api.example.com:8443/v1/users?id=7');
console.log(api.host);      // Hostname + Port
console.log(api.hostname);  // nur der Hostname

// Standardport 443 bei https wird weggelassen
const site = new URL('https://example.com:443/');
console.log(site.host);

// URL ohne Host
console.log(new URL('mailto:info@example.com').host === '');
api.example.com:8443 api.example.com example.com true

URL auf lokale Entwicklungsumgebung umschreiben

const toLocal = (href) => {
  const url = new URL(href);
  url.protocol = 'http:';
  url.host = 'localhost:3000'; // setzt Hostname UND Port
  return url.href;
};

console.log(toLocal('https://shop.example.com/cart?item=42'));
http://localhost:3000/cart?item=42

Externe Links auf der Seite erkennen

// Alle Links markieren, die auf einen fremden Host zeigen
const currentHost = location.host;

document.querySelectorAll('a[href]').forEach((link) => {
  const url = new URL(link.href, location.href);
  if (url.host && url.host !== currentHost) {
    link.target = '_blank';
    link.rel = 'noopener noreferrer';
  }
});

IPv6, Punycode und das Setzen ohne Port

console.log(new URL('http://[::1]:8080/').host);
console.log(new URL('https://münchen.de/').host);

const url = new URL('https://a.example:8080/');
url.host = 'b.example'; // kein Port angegeben, also bleibt 8080
console.log(url.host);

url.host = 'ungültig host'; // ungültig, wird ignoriert
console.log(url.host);
[::1]:8080 xn--mnchen-3ya.de b.example:8080 b.example:8080

// Wichtig · Fallstricke

  • Standardports werden weggelassen: :80 bei http: und :443 bei https: tauchen in host nicht auf. Vergleichen Sie daher geparste URLs miteinander und nicht rohe Zeichenketten.
  • Setzen ohne Port behält den alten Port: Mit url.host = 'neu.example' bleibt ein vorhandener Port erhalten. Soll der Port entfernt werden, setzen Sie zusätzlich url.port = '' oder verwenden Sie hostname.
  • Kein Fehler bei ungültigen Werten: Ungültige Zuweisungen werden stillschweigend verworfen. Prüfen Sie den Wert nach dem Setzen, wenn es darauf ankommt.
  • Sicherheit: Verlassen Sie sich bei Zugriffsprüfungen, CORS- oder Weiterleitungslogik nicht allein auf host. origin berücksichtigt auch das Schema (http gegenüber https). Prüfungen wie host.endsWith('example.com') lassen sich mit evil-example.com umgehen.
  • Internationale Domains werden in Punycode zurückgegeben (xn--…), nicht in Unicode.
  • Kompatibilität: In allen modernen Browsern verfügbar, ebenso in Node.js (globales URL ab Version 10) und in Web Workern. Die Eigenschaft gibt es auch bei Location (location.host) und HTMLAnchorElement.