Signatur
Beschreibung
Die Eigenschaft username gibt das Muster zurück, das ein URLPattern für den Benutzernamen einer URL verwendet, also für den Teil vor dem Doppelpunkt bzw. dem @ in https://benutzer:passwort@example.com. Der Wert ist schreibgeschützt. Er wird beim Erzeugen des Musters festgelegt und in eine normalisierte Form gebracht.
Wurde beim Konstruktor kein Benutzernamen-Muster angegeben, enthält die Eigenschaft den Platzhalter "*". Das Muster passt dann auf jeden Benutzernamen, auch auf einen leeren. Username und Passwort werden außerdem nie aus einer Basis-URL (baseURL) übernommen.
Nützlich ist die Eigenschaft vor allem, wenn man ein Muster prüfen oder protokollieren will, etwa beim Debuggen eines Routers. Außerdem kann man damit nachvollziehen, wie Syntax wie benannte Gruppen (:user) oder reguläre Ausdrücke ((\\w+)) normalisiert wurde. Das Ergebnis eines Abgleichs mit den eingefangenen Gruppen liefert URLPattern.prototype.exec() unter result.username.
Rückgabewert
"admin", ":user" oder "*", wenn kein Muster angegeben wurde.Beispiele
Muster auslesen: angegeben vs. Standardwert
const mitUser = new URLPattern({ username: 'admin', hostname: 'example.com' });
const ohneUser = new URLPattern({ hostname: 'example.com' });
console.log(mitUser.username);
console.log(ohneUser.username);
Nur URLs mit bestimmtem Benutzer zulassen
const pattern = new URLPattern({
protocol: 'https',
username: 'deploy',
hostname: 'git.example.com'
});
console.log(pattern.test('https://deploy:geheim@git.example.com/repo'));
console.log(pattern.test('https://gast@git.example.com/repo'));
Benutzernamen per benannter Gruppe extrahieren
const pattern = new URLPattern({ username: ':user', hostname: '*.example.com' });
console.log(pattern.username); // Muster selbst
const result = pattern.exec('ftp://alice:pw@files.example.com/');
console.log(result?.username.input);
console.log(result?.username.groups.user);
Nur Buchstaben per regulärem Ausdruck zulassen
const pattern = new URLPattern({ username: '([a-z]+)' });
console.log(pattern.username);
console.log(pattern.test('https://bob@example.com/'));
console.log(pattern.test('https://bob42@example.com/'));
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
pattern.username = 'x'wird ignoriert (im Strict Mode gibt es einenTypeError). Um das Muster zu ändern, muss man ein neuesURLPatternerzeugen. - Standardwert
"*": Ohne Angabe passt jeder Benutzername, auch gar keiner. Wer URLs mit Zugangsdaten ausschließen will, muss ausdrücklichusername: ''angeben. - Keine Übernahme aus
baseURL: Username und Passwort werden anders als Protokoll oder Host nicht aus der Basis-URL geerbt. - Normalisierung: Der zurückgegebene String kann vom Eingabewert abweichen, z. B. durch Prozent-Kodierung von Sonderzeichen.
- Sicherheit: Zugangsdaten in URLs gelten als veraltet und unsicher. Browser blockieren sie oft (etwa bei Unterressourcen) oder zeigen Warnungen an. Man sollte sich nicht auf sie verlassen und sie nie protokollieren.
- Kompatibilität:
URLPatterngibt es in Chromium seit Version 95. Firefox (142) und Safari (26) unterstützen es erst seit Kurzem. In Node.js ist es ab Version 23.8 global verfügbar. Für ältere Umgebungen gibt es das Polyfillurlpattern-polyfill.