Post/Redirect/Get

Post/Redirect/Get (PRG) oder Redirect After Post (deutsch Umleitung nach dem Versand) ist ein Verhaltensmuster in der Entwicklung von Webanwendungen. Das Muster verhindert, dass Formulare durch den Anwender mehrfach gesendet werden.[1] PRG wird zudem in der Suchmaschinenoptimierung (SEO) eingesetzt, insbesondere bei Filter-Navigationen in Online-Shops.[2]

Hintergrund

Diagramm des Doppel-POST-Problems.

Wenn ein Webformular beim Klicken des Knopfes zum Abschicken des Formulars (z. B. „Kaufen“, „Bezahlen“, „Senden“ etc.) die Daten mittels der HTTP-Anfragemethode POST übermittelt und keine Weiterleitung vorgesehen ist, erscheint die Ergebnisseite unter derselben URL. Dies kann ein Problem darstellen, wenn der Nutzer nach dem Absenden des Formulars die Seite neu lädt und somit die letzte Anfrage (POST) wiederholt. Auch wenn in den meisten Webbrowsern vor dem erneuten Abschicken des Formulars gewarnt wird, könnte eine Missachtung beispielsweise dazu führen, dass Bestellungen mehrfach aufgegeben werden.

Funktionsweise

Diagramm von Post/Redirect/Get

Um das Problem des erneuten Ladens des Formulars und des potenziell folgenden doppelten POST zu verhindern, wird der Benutzer mittels des HTTP-Statuscode „303: See Other“ auf eine Seite umgeleitet, welche mittels der GET-Methode geladen wird.

Lädt der Benutzer diese Seite erneut, kommt er wieder bei den Ergebnissen seiner Anfrage an.

Einsatz in der Suchmaschinenoptimierung (SEO)

Filter-Navigationen in Online-Shops (häufig auch als Layered- oder facettierte Navigation bezeichnet) erlauben dem Nutzer das Sortiment nach verschiedenen Produktmerkmalen wie Farbe, Größe, Material usw. zu filtern. Aus Sicht der Suchmaschinenoptimierung ist diese Funktion jedoch problematisch, da hierbei (Near-) Duplicate Content sowie nahezu unendlich viele zusätzliche URLs entstehen, was wiederum zu einer Verschwendung von Crawling-Budget führt.

Die PRG-Methode ist ein Ansatz, um diese SEO-Probleme im Zusammenhang mit Filter-Navigationen zu beheben[3] und ist dabei anderen im Bereich SEO üblichen Lösungsansätzen, die die Probleme nur unzureichend adressieren, überlegen[4]. Die PRG-Methode wird jedoch von gängigen Content-Management-Systemen (CMS) und Online-Shop-Systemen in der Regel standardmäßig nicht unterstützt und muss individuell ergänzt werden (Beispiel-Implementierung für WordPress[5]).

Alternativen

Grundsätzlich besteht die Möglichkeit, bereits in die ursprüngliche Seite einen eindeutigen Bezeichner einzubauen, der beim Absenden der Daten über POST mitgesendet wird. Wenn der Server eine weitere Anfrage mit demselben eindeutigen Bezeichner erhält, kann dieser den erneuten POSTablehnen, etwa mit dem Statuscode „405: Method Not Allowed“ oder „409: Conflict“.

Quellen

  1. Ward Cunningham: Redirect After Post. In: Portland Pattern Repository. 12. September 2014, abgerufen am 7. Mai 2017 (englisch).
  2. Post-Redirect-Get. Abgerufen am 17. August 2024.
  3. POST, GET & PRG-Pattern, Faceted Navigation und der Einsatz im SEO. In: Catbird Seat - Agentur für Digitales Marketing. 11. Februar 2016 (catbirdseat.de [abgerufen am 19. Mai 2018]).
  4. l▷ SEO Optimierung für Layered Navigations mit PRG Pattern ✔ | JaJuMa-Blog. Abgerufen am 19. Mai 2018 (deutsch).
  5. Tobias Keller: PRG Pattern in WordPress implementieren. 26. August 2018, abgerufen am 28. August 2018 (deutsch).

Auf dieser Seite verwendete Medien

PostRedirectGet DoubleSubmitProblem.png
Autor/Urheber: Quilokos, Lizenz: LGPL
Diagram of a typical HTTP POST problem that POST/Redirect/GET solves.