Heim  >  Artikel  >  Java  >  So extrahieren Sie Domänennamen zuverlässig aus URLs: Alternative Techniken und Randfälle

So extrahieren Sie Domänennamen zuverlässig aus URLs: Alternative Techniken und Randfälle

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 01:23:02231Durchsuche

How to Extract Domain Names from URLs Reliably: Alternative Techniques and Edge Cases

Domänennamen aus URLs extrahieren

Diese Frage zielt darauf ab, Domänennamen effektiv aus URLs zu extrahieren. Obwohl der bereitgestellte Java-Code scheinbar einigermaßen funktioniert, erkundigt sich der Autor nach überlegenen Techniken oder potenziellen Grenzfällen, die seine Zuverlässigkeit beeinträchtigen könnten.

Alternative Implementierung mit java.net.URI

Es wird ein saubererer Ansatz zum Parsen von URLs empfohlen, indem die Klasse java.net.URI anstelle von java.net.URL verwendet wird. Letzteres weist bekannte Probleme auf, wie zum Beispiel die problematische Methode „equals“, die den Code in Szenarien mit nicht vertrauenswürdigen Eingaben Schwachstellen aussetzen kann:

public static String getDomainName(String url) throws URISyntaxException {
    URI uri = new URI(url);
    String domain = uri.getHost();
    return domain.startsWith("www.") ? domain.substring(4) : domain;
}

Diese verbesserte Methode sollte Domänennamen effektiv abrufen und gleichzeitig Grenzfälle mit falscher Groß-/Kleinschreibung oder verarbeiten Variationen im Präfix „www“.

Zusätzliche zu berücksichtigende Randfälle

Der Originalcode berücksichtigt bestimmte URL-Formate nicht:

  • httpfoo/bar (relative URL mit Pfad, der mit „http“ beginnt)
  • HTTP://example.com (Groß-/Kleinschreibung beim Protokoll)
  • //example.com (protokollrelative URL mit Host)
  • www/foo (relative URL mit Pfad beginnend mit „www“)
  • wwwexample.com (Domain beginnt mit „www“, aber nicht das Präfix „www“)

Um diese Randfälle anzugehen, sollten Sie einen Verweis auf Anhang B von RFC 3986 in Betracht ziehen, der einen umfassenden regulären Ausdruck zum Parsen von URI-Referenzen und deren Aufteilung in einzelne Komponenten bereitstellt.

Das obige ist der detaillierte Inhalt vonSo extrahieren Sie Domänennamen zuverlässig aus URLs: Alternative Techniken und Randfälle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn