Signatur
Beschreibung
Die Eigenschaft password einer URL-Instanz enthält das Passwort aus dem Benutzerinformations-Teil einer URL, also den Teil nach dem Doppelpunkt und vor dem @: schema://benutzer:passwort@host/. Enthält die URL kein Passwort, ist der Wert ein leerer String "".
Die Eigenschaft ist les- und schreibbar. Beim Setzen wird der Wert automatisch nach dem userinfo percent-encode set kodiert: Zeichen wie @, :, /, ?, #, Leerzeichen oder Nicht-ASCII-Zeichen werden in %XX-Sequenzen umgewandelt. Beim Lesen erhalten Sie den Wert daher prozentkodiert; für den Klartext ist decodeURIComponent() nötig. Jede Änderung wirkt sich sofort auf href und die anderen abgeleiteten Eigenschaften aus.
Typische Einsatzfälle sind das Auslesen von Zugangsdaten aus Verbindungs-URLs (z. B. postgres://user:pw@db:5432/app in Node.js), das sichere Zusammenbauen solcher URLs mit Sonderzeichen im Passwort sowie das Entfernen von Zugangsdaten, bevor eine URL geloggt oder angezeigt wird.
Bei URLs, die keine Benutzerinformationen haben können – etwa ohne Host oder mit dem Schema file: – bleibt eine Zuweisung wirkungslos.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | string | Nur beim Setzen: das neue Passwort. Wird automatisch prozentkodiert. Ein leerer String entfernt das Passwort aus der URL. |
Rückgabewert
"", wenn keins vorhanden ist.Beispiele
Passwort aus einer URL auslesen
const url = new URL('https://anna:geheim@example.com/login');
console.log(url.username);
console.log(url.password);
const ohne = new URL('https://example.com/');
console.log(JSON.stringify(ohne.password));
Passwort mit Sonderzeichen sicher setzen
const dbUrl = new URL('postgres://db.intern:5432/shop');
dbUrl.username = 'app';
dbUrl.password = 'p@ss:wört 1';
console.log(dbUrl.password);
console.log(dbUrl.href);
// Klartext zurückgewinnen
console.log(decodeURIComponent(dbUrl.password));
Zugangsdaten vor dem Loggen entfernen
const maskiereUrl = (raw) => {
const url = new URL(raw);
if (url.password) url.password = '***';
return url.href;
};
const entferneZugangsdaten = (raw) => {
const url = new URL(raw);
url.username = '';
url.password = '';
return url.href;
};
const quelle = 'https://admin:topsecret@api.example.com/v1/status';
console.log(maskiereUrl(quelle));
console.log(entferneZugangsdaten(quelle));
Zuweisung ohne Wirkung bei file:-URLs
const datei = new URL('file:///tmp/bericht.txt');
datei.password = 'geheim';
console.log(JSON.stringify(datei.password));
console.log(datei.href);
// Wichtig · Fallstricke
- Sicherheit: Zugangsdaten in URLs landen leicht im Browserverlauf, in Server- und Proxy-Logs, im
Referer-Header oder in Fehlermeldungen. Übertragen Sie Passwörter besser über denAuthorization-Header und entfernen Sieusername/password, bevor Sie URLs protokollieren oder anzeigen. - fetch(): Im Browser wirft
fetch()bzw.new Request()einenTypeError, wenn die URL Zugangsdaten enthält. Übergeben Sie diese stattdessen z. B. alsAuthorization: Basic …. - Kodierung: Der Getter liefert den Wert prozentkodiert zurück. Vergleiche mit einem Klartext-Passwort schlagen deshalb fehl, wenn Sie nicht vorher
decodeURIComponent()anwenden. - Setzen Sie ein Passwort ohne Benutzernamen, entsteht eine URL wie
https://:pw@host/. Das ist gültig, wird aber von manchen Servern nicht erwartet. - Bei URLs ohne Host sowie bei
file:-URLs wird die Zuweisung stillschweigend ignoriert, ohne dass ein Fehler geworfen wird. - Kompatibilität: Wird von allen modernen Browsern und Node.js unterstützt.
URLsteht in Node.js seit Version 10 global zur Verfügung.