Zum Inhalt springen
Links verwalten

Warum Ihr Link Daten verliert: Parameter und Fragmente korrigieren

Unterscheiden Sie & und # in URLs, vermeiden Sie doppelte Kodierung und prüfen Sie mit WikiURL den Link, den Sie tatsächlich teilen.

WikiURL · Weiterleitungen · Veröffentlicht

Eine Lupe hilft, die Teile eines Links neben einem Seitenlesezeichen zu verbinden.

Eine geöffnete Seite erhält nicht immer die erwarteten Daten

Sie haben einen Link zur Suche nach Kaffee und Tee vorbereitet. Die Seite öffnet sich, doch die Ergebnisse passen nicht. Prüfen Sie vor Schuldzuweisungen an Server oder Kurzlinkdienst die tatsächlich geteilte Adresse. Im erfundenen Beispiel steht q=cafe&te bei üblicher Interpretation von Formularparametern nicht für einen einzigen Wert cafe&te: & trennt Einträge. Außerdem kennzeichnet #precios ein Fragment. Ersetzen Sie example.invalid durch eine eigene Seite, die diese Abfrage unterstützt, bevor Sie eine echte Adresse testen.

Teilen Sie die Diagnose in drei Fragen auf: Welche Seite soll sich öffnen, welche Daten soll sie erhalten und welcher Teil soll danach angezeigt werden? Kopieren Sie die URL des Links, nicht nur die sichtbare Buttonbeschriftung. Speichern Sie vor Änderungen eine Referenzversion. Diese Anleitung empfiehlt, die Bestandteile und anschließend das Ergebnis mit WikiURL zu prüfen; sie verspricht weder, dass jede Website q versteht, noch dass eine erfolgreiche Antwort korrekte Suchergebnisse bedeutet.

https://example.invalid/buscar?q=cafe&te#precios

Gehört das kaufmännische Und zum Text, darf es kein Trenner sein

Für die wörtliche Suche nach cafe & te gehört das kaufmännische Und zum Wert von q. Übergeben Sie beim Erstellen mit URLSearchParams unkodierten Text; die Serialisierung stellt dieses Zeichen als %26 dar. MDN erklärt, dass diese Schnittstelle bei der Textausgabe die Formularkodierung anwendet und Leerzeichen als + darstellt. Ersetzen Sie deshalb aber nicht jedes kaufmännische Und einer URL: Manche trennen absichtlich Parameter.

Das JavaScript-Beispiel erstellt die Adresse aus einer Basis, setzt den Suchwert und fügt das Fragment getrennt hinzu. Führen Sie es lokal in einer JavaScript-Umgebung aus, um das Ergebnis ohne Anfrage an die erfundene Domain zu sehen. Wenn Sie nicht programmieren, verwenden Sie den von Ihrer Suchseite erzeugten Link, statt Text manuell zusammenzusetzen. Vergleichen Sie den erwarteten Wert mit den angezeigten Ergebnissen; %26 im Link beweist nicht, wie eine konkrete Anwendung die Daten verarbeitet.

const url = new URL("https://example.invalid/buscar");
url.searchParams.set("q", "cafe & te");
url.hash = "precios";
console.log(url.href);
// https://example.invalid/buscar?q=cafe+%26+te#precios

Das Fragment ist kein vom Server empfangener Parameter

MDN dokumentiert, dass der Teil hinter # vom Client verarbeitet und beim Abruf der Ressource nicht an den Server geschickt wird. Eine Seite kann ihn für den Sprung zu einem Abschnitt wie precios oder für anderes Anwendungsverhalten nutzen. Bei q=cafe#te ergänzt te daher nicht den Wert, den der Server in dieser Anfrage erhält. Soll # Bestandteil des Suchtexts sein, steht es innerhalb des Werts als %23, wie die dritte Adresse zeigt.

Prüfen Sie beide Wirkungen getrennt: Die Suche muss die gewünschten Ergebnisse anzeigen und das Fragment den gewünschten Ort erreichen. Der Abschnitt muss existieren oder die Anwendung das Fragment erkennen. Ein Prüfer, der die Website vom Server aus abruft, bestätigt für sich allein keinen Sprung des Browsers zu einem Abschnitt. Löschen Sie auch nicht alle Fragmente als allgemeine Lösung: Dabei könnte genau der Teil verschwinden, den die empfangende Person benötigt.

https://example.invalid/buscar?q=cafe%23te#precios

Den Wert einmal kodieren, nicht die ganze Adresse

RFC 3986 unterscheidet Komponententrennzeichen von Daten und warnt vor mehrfachem Kodieren oder Dekodieren derselben Zeichenfolge. Übergeben Sie cafe%26te als bereits kodierten Text an eine Funktion, die einen unkodierten Wert erwartet, kann das Prozentzeichen zu %25 und das Ergebnis zu %2526 werden. Damit entsteht eine weitere Ebene; die gewünschte Suche wird nicht automatisch erhalten. Die beiden Beispielzeilen helfen, diese Veränderung zu erkennen.

Die Korrektur hängt vom Ursprung der Daten ab. Menschlich eingegebenen Text übergeben Sie unkodiert an die Schnittstelle zum Aufbau der Parameter. Eine vollständige gültige URL behandeln Sie nicht als einzigen Wert, um die ganze Adresse erneut zu kodieren. Dokumentieren Sie die Eingaben jeder Funktion oder jedes Formulars. Vermeiden Sie globale Ersetzungen von %, & oder #: Sie könnten richtige Trenner, nötige Parameter oder unbeabsichtigt andere Pfade verändern.

q=cafe%26te
q=cafe%2526te

WikiURL für die Antwort nutzen, den Browser für den Inhalt

Fügen Sie eine echte öffentliche Adresse in den URL-Prüfer von WikiURL ein. Prüfen Sie den zurückgegebenen HTTP-Status und das endgültige Ziel. Die Implementierung fragt vom Server aus ab und verfolgt Weiterleitungen; das hilft, unerwartete Ziele zu finden. Geben Sie keine Verwaltungslinks, Passwörter oder Adressen mit privaten Daten ein. Prüfen Sie nicht example.invalid aus unseren Beispielen: Die Domain dient hier als erfundenes Ziel.

Öffnen Sie die echte Version zusätzlich im Browser und kontrollieren Sie Suche und Abschnitt. Eine erfolgreiche Antwort kann die Seite laden, ohne den erwarteten Filter anzuwenden. Vergleichen Sie bei Weiterleitungen die Parameter mit der Referenz und beobachten Sie das Fragment im Browser. Der Prüfer interpretiert weder die Anwendungslogik noch bescheinigt er Sicherheit oder Zugriffsrechte eines Benutzerkontos. Ziel ist, die Antwortbefunde mit einer Funktionsprüfung zu verbinden.

Die Kopie testen, die eine andere Person erhalten wird

Fügen Sie den fertigen Link in den vorgesehenen Kanal ein und öffnen Sie diese Kopie vor einer breiten Verteilung. Prüfen Sie, ob ein Satzschlusspunkt mitkopiert wurde, ein Teil fehlt oder sichtbarer Text mit dem Ziel verwechselt wurde. Soll der Inhalt öffentlich sein, testen Sie ohne Abhängigkeit von Ihrer Administratorsitzung. Bei einem QR prüfen Sie neben der Quelldatei auch die beim Scannen angezeigte Adresse.

Führen Sie ein kleines Protokoll: ursprüngliche Adresse, erwarteter Suchwert, geplantes Fragment, geteilte URL und beobachtetes Ergebnis. Bei Fehlern korrigieren Sie den konkreten Bestandteil und wiederholen den Test. Veröffentlichen Sie nur die geprüfte Version. So unterscheiden Sie Fehler beim Parameteraufbau, zielverändernde Weiterleitungen und Browserverhalten, ohne aus einem sich öffnenden Link eine Garantie für den Erhalt aller vorgesehenen Daten abzuleiten.

Werkzeug öffnen →

Quellen und Dokumentation

← Alle Anleitungen