Deutsch

Entwicklertools · URL-Encoder und -Decoder

Anatomie einer URL: Schema, Autorität, Pfad, Abfrage und Fragment erklärt

· Hintergrund

URL-Struktur Webstandards Entwicklertools

Fünf URL-Komponenten, gekennzeichnet mit ihren Trennzeichen
Original-ToolAcre-Vektorillustration

Jede prozentuale Kodierungsentscheidung hängt davon ab, in welchem Teil der URL sich ein Zeichen befindet. Dieser Beitrag benennt die fünf Komponenten aus RFC 3986, zeigt, was jedes Trennzeichen bedeutet und warum das Fragment nie den Server erreicht.

Warum das gleiche # an einer Stelle in Ordnung ist und an einer anderen einen Link zerstört – eine Komponentenfrage, keine Zeichenfrage

Ein Hash-Zeichen (#) in einer URL bedeutet völlig unterschiedliche Dinge, je nachdem, wo es erscheint. Innerhalb eines Abfragezeichenfolgenwerts wie ?search=C%23sharp muss dieser aus Sicherheitsgründen in %23 codiert werden. Am Ende einer URL wie https://example.com/page#section, wird das Fragmenttrennzeichen markiert und alles danach ist ein Fragment. Ein Charakter, zwei Kontexte, zwei unterschiedliche Bedeutungen. Aus diesem Grund hängen Codierungsentscheidungen davon ab, dass Sie wissen, mit welchem ​​Teil der URL Sie arbeiten.

Das Fragezeichen (?) hat ebenfalls einen doppelten Charakter. Innerhalb eines Pfads oder Abfragewerts muss dieser als %3F codiert werden, um als Daten angezeigt zu werden. Als Literalzeichen zwischen Pfad und Abfragezeichenfolge handelt es sich um eine strukturelle Syntax. Das Verständnis dieser fünf Komponenten – Schema, Autorität, Pfad, Abfrage und Fragment – ​​ist die Grundlage für die korrekte URL-Verarbeitung.

Die fünf Komponenten: Schema, Autorität, Pfad, Abfrage, Fragment – und die Trennzeichen, die sie trennen

RFC 3986 definiert URLs formal mit fünf Komponenten: Schema, Autorität, Pfad, Abfrage und Fragment, getrennt durch bestimmte Trennzeichen. Zuerst kommt das Schema, gefolgt von ://,, dann der Autorität, dann /,, dann dem Pfad, dann ?, dann der Abfrage, dann # und dann dem Fragment. Nicht alle Komponenten erscheinen in jeder URL. Eine minimale URL besteht möglicherweise nur aus Schema und Pfad, z. B. „mailto:user@example.com“. Eine vollständige URL umfasst alle fünf.

Jede Komponente hat ihre eigenen Syntaxregeln. Ein Doppelpunkt ist im Schema, ein Schrägstrich im Pfad und ein kaufmännisches Und in der Abfrage reserviert. Reservierte Zeichen müssen kodiert werden, wenn sie als Daten angezeigt werden: Schrägstriche in Pfadwerten werden zu %2F.

Innerhalb der Autorität – Benutzerinfo, Host und Port und warum @ und : dort reserviert sind

Die Autoritätskomponente enthält die Netzwerkadresse der Ressource: Benutzername, Passwort, Hostname und Port. Das Format ist [userinfo@]host[:port]. Benutzerinfo und Host werden durch @ getrennt; Host und Port werden durch : getrennt. Diese @- und :-Zeichen sind innerhalb der Autorität zur Abgrenzung dieser Unterkomponenten reserviert. Wenn Ihr Benutzername ein @-Symbol enthält, muss dieser vor der Verkettung prozentual kodiert werden. Beispielsweise würde „user@email.com:password“ als Benutzername vor dem letzten @ zu „user%40email.com:password“ werden.

Der Hostname kann eine registrierte Domäne wie example.com, eine IP-Adresse in gepunkteter Dezimalzahl wie 192.0.2.1 oder eine in Klammern eingeschlossene IPv6-Adresse wie [::1] sein. Der Port ist optional; Wenn es weggelassen wird, bestimmt das Schema den Standardwert (80 für http, 443 für https usw.). Der Userinfo-Teil wird in modernen URLs selten verwendet, bleibt aber Teil der Syntax.

Pfadsegmente und die Bedeutung von / – hierarchische Struktur und Punktsegmentauflösung

Der Pfad ist eine Folge von Segmenten, die durch Schrägstriche getrennt sind. Der Pfad /a/b/c besteht aus drei Segmenten: a, b und c. Jedes Segment kann nicht reservierte Zeichen, prozentcodierte Zeichen oder bestimmte reservierte Zeichen enthalten, die in diesem Kontext sicher sind. Ein Schrägstrich innerhalb eines Segments muss als %2F codiert werden, um Verwechslungen mit Segmenttrennzeichen zu vermeiden. Der Pfad ist hierarchisch; es impliziert, dass a ein Ort ist, dann ist a/b spezifischer.

Pfade unterstützen auch spezielle Punktsegmente: Ein einzelner Punkt (.) bedeutet „aktuelles Verzeichnis“ und zwei Punkte (..) bedeuten „übergeordnetes Verzeichnis“. Ein Pfad wie ../../etc/passwd wird nach oben aufgelöst. Moderne URLs und HTTP verzichten auf diese, sind aber in der Syntax vorhanden. Ein Pfadsegment, das einen wörtlichen Punkt oder Doppelpunkt enthält, muss prozentual codiert werden, wenn die wörtliche Punktbedeutung nicht beabsichtigt ist.

Abfrage und Fragment – Schlüssel-Wert-Konventionen und warum das Fragment im Browser verbleibt

Die Abfragezeichenfolge folgt dem Pfad und beginnt mit ?. Traditionell handelt es sich um eine Reihe von durch & getrennten Schlüssel=Wert-Paaren, obwohl die Syntax eigentlich unstrukturiert ist – in eine Abfrage kann alles passen. Wenn Sie einen Wert haben, der & oder = enthält, müssen diese Zeichen prozentual kodiert sein, damit sie nicht mit Trennzeichen verwechselt werden. Die Anfrage wird an den Server gesendet; Der Server entscheidet, was damit geschehen soll.

Das Fragment folgt der Abfrage und beginnt mit #. Alles nach # ist ein Fragment und erreicht nie den Server. Der Browser verarbeitet das Fragment lokal, normalerweise um zu einem benannten Anker zu springen oder um den Status innerhalb einer Einzelseitenanwendung anzuzeigen. Da das Fragment nie den Server erreicht, wird davon ausgegangen, dass eine URL mit einem anderen Fragment auf dieselbe Ressource verweist.

Arbeitsbeispiel: Zerlegen einer langen realen URL – Beschriften jeder Komponente und jedes Trennzeichens

Nehmen Sie die URL „https://user:pass@example.com:8080/path/to/page?search=hello&sort=date#results".. Das Schema ist https. Die Autorität ist user:pass@example.com:8080, aufgeteilt in Benutzerinfo (user:pass), Host (example.com) und Port (8080). Der Pfad ist /path/to/page, mit den Segmenten path, to und page. Die Abfrage lautet search=hello&sort=date, Das Fragment enthält zwei Ergebnisse. Geben Sie diese URL in den URL-Encoder und -Decoder ein, um zu sehen, wie das Tool jede Komponente beschriftet und kodiert.

Wenn die Suche ein & enthielt, wie etwa ?search=R&D, wird es bei richtiger Codierung zu ?search=R%26D. Prozentkodierte Zeichen erzeugen keine visuellen Grenzen im Text, daher ist eine sorgfältige Kodierung und Dekodierung für eine korrekte Analyse unbedingt erforderlich.

Was dies nicht abdeckt – relative Referenzauflösung und spezielle Schemata wie mailto: und data:

Relative Referenzen wie „../page"“ oder „?query=value“ sind innerhalb von HTML gültig und werden relativ zum aktuellen Dokument interpretiert, sie haben jedoch ihre eigenen separaten Auflösungsregeln. Spezielle Schemata wie mailto:, data: und file: folgen völlig anderen Regeln und sind keine standardmäßigen absoluten URLs.

Dieser Beitrag konzentriert sich nur auf die standardmäßige absolute URL-Struktur, die vom Inspektor demonstriert wurde. Relative Referenzen benötigen eine Basis-URL, bevor ihre Komponenten interpretiert werden können, während Schemata wie mailto und data nicht die gleiche Berechtigungs- und Pfadform haben. Durch die Trennung dieser Fälle wird verhindert, dass eine von einer HTTPS-Adresse gelernte Regel blind auf die Syntax mit unterschiedlichen Trennzeichen, Auflösungsschritten oder Transportverhalten angewendet wird.

Takeaway: Machen Sie sich mit der Komponente vertraut, bevor Sie codieren – wie die Einzelwert- und Gesamtadressenmodi des URL-Encoders und -Decoders dieser Struktur zugeordnet werden

Die Komponente, die Sie kodieren, bestimmt, welche Zeichen maskiert werden müssen und welche sicher sind. Ein Schrägstrich ist eine literale Syntax im Pfad, daher muss ein Schrägstrich in einem Wert %2F sein. In Abfragen müssen & und = codiert werden, wenn sie in Werten vorkommen. Der URL-Encoder und -Decoder verfügt über zwei Modi: „Komponente“ zum Codieren eines einzelnen Werts und „Gesamtadresse“ für eine vollständige URL. Verwenden Sie den Komponentenmodus, wenn Sie URLs durch Verketten von Teilen erstellen. Verwenden Sie den Gesamtadressmodus, um eine vorhandene URL zu überprüfen.

Wenn Sie die fünf Komponenten und ihre Trennzeichen kennen, können Sie jedes Mal, wenn Sie auf eine Codierungsaufgabe stoßen, die richtige Auswahl treffen.