Signatur
Beschreibung
Die Eigenschaft username eines URL-Objekts enthält den Benutzernamen aus dem Userinfo-Teil einer URL. Das ist der Abschnitt zwischen :// und dem ersten : oder @, z. B. max in ftp://max:geheim@example.com/. Gibt es keinen Benutzernamen, ist der Wert ein leerer String "", niemals null.
Man kann die Eigenschaft lesen und schreiben. Beim Setzen werden Sonderzeichen automatisch prozentkodiert, und zwar nach dem sogenannten „userinfo percent-encode set“. Zum Beispiel wird @ zu %40, : zu %3A und ein Leerzeichen zu %20. Beim Lesen bekommt man den kodierten Wert zurück. Den Klartext erhält man mit decodeURIComponent(). Jede Änderung wirkt sich sofort auf href, toString() und toJSON() aus.
Typische Einsatzfälle:
- Zugangsdaten aus Verbindungs-URLs auslesen, z. B. bei Datenbank-URLs wie
postgres://user:pw@host/dbin Node.js. - URLs vor dem Protokollieren oder Anzeigen von Zugangsdaten bereinigen.
- Benutzernamen mit Sonderzeichen sicher in eine URL einsetzen, ohne selbst kodieren zu müssen.
Hat eine URL keinen Host (z. B. mailto:) oder verwendet sie das Schema file:, kann sie keinen Benutzernamen enthalten. In diesem Fall wird eine Zuweisung stillschweigend ignoriert, es gibt keinen Fehler.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $wert (beim Setzen) | string | Neuer Benutzername. Andere Werte werden in einen String umgewandelt. Sonderzeichen werden automatisch prozentkodiert. "" entfernt den Benutzernamen. |
Rückgabewert
"".Beispiele
Benutzernamen aus einer Datenbank-URL auslesen
const dbUrl = new URL('postgres://app_user:s3cr3t@db.example.com:5432/shop');
console.log(dbUrl.username);
console.log(dbUrl.password);
console.log(dbUrl.hostname);
// Ohne Zugangsdaten ergibt sich ein leerer String
console.log(new URL('https://example.com/').username === '');
Benutzernamen mit Sonderzeichen setzen (automatische Kodierung)
const url = new URL('https://example.com/api');
url.username = 'max muster@firma';
console.log(url.username);
console.log(url.href);
// Klartext zurückgewinnen
console.log(decodeURIComponent(url.username));
Zugangsdaten vor dem Protokollieren entfernen
const redactUrl = (input) => {
const url = new URL(input);
if (url.username || url.password) {
url.username = '';
url.password = '';
}
return url.href;
};
console.log(redactUrl('https://admin:topsecret@intern.example.com/status'));
Zuweisung wird bei URLs ohne Host ignoriert
const mail = new URL('mailto:info@example.com');
mail.username = 'max';
console.log(mail.username, mail.href);
const file = new URL('file:///home/max/doc.txt');
file.username = 'max';
console.log(JSON.stringify(file.username));
// Wichtig · Fallstricke
- Kodierter Wert:
usernameliefert den prozentkodierten Wert. Wenn Sie ihn vergleichen oder anzeigen wollen, dekodieren Sie ihn vorher mitdecodeURIComponent(). - Stilles Ignorieren: Bei URLs ohne Host (z. B.
mailto:,data:) und beifile:-URLs hat eine Zuweisung keine Wirkung. Es wird auch kein Fehler geworfen. - Sicherheit: Zugangsdaten in URLs gelten als veraltet und riskant. Sie landen in Logs, im Verlauf und im
Referer.fetch()bzw.new Request()werfen einenTypeError, wenn die URL Zugangsdaten enthält. Übergeben Sie diese stattdessen imAuthorization-Header. Browser zeigen bei solchen URLs teilweise Warnungen an oder entfernen die Zugangsdaten. Außerdem nutzen Phishing-Seiten Adressen wiehttps://bank.de@boese.example/, um Nutzer zu täuschen. - Wird
usernamegeleert, während noch ein Passwort gesetzt ist, entsteht eine URL der Formhttps://:pw@host/. - Kompatibilität: Die Eigenschaft wird in allen modernen Browsern, in Web Workern und in Node.js unterstützt (global ab Version 10, über das Modul
urlab Version 7).