Wiki

A universe of ideas

User Tools

Site Tools


computer:web:redirects

This is an old revision of the document!


Weiterleitungen / Redirects

Eine Übersicht über Möglichkeiten für Weiterleitungen, die über die klassischen 301 und 302 Status-Codes hinausgeht (zumindest ein bisschen).

Weiterleitung mit HTTP Status-Codes

Status Nachricht Spezifikation Dauer Cachability Methodenänderung
Erste Aktuelle [1]
301 Moved Permanently RFC 1945 (1996) RFC 7231 (2014) Permanent (V)
(by default)
Möglich (üblich [2]):
POST → GET
302 Found
(v1.0: “Moved temporarily”)
RFC 1945 (1996) RFC 7231 (2014) Zeitweise (V)
(not by default) [3]
Möglich (üblich [2]):
POST → GET
303 See Other RFC 2616 (1999)
RFC 2068 (1997)
RFC 7231 (2014) Zeitweise (X) [4] Verpflichtend:
* → GET oder HEAD
307 Temporary Redirect RFC 2616 (1999) RFC 7231 (2014) Zeitweise (V)
(not by default) [5]
308 Permanent Redirect RFC 7238 (2014) RFC 7538 (2015) Permanent (V)
(by default)

Nicht vergessen einen kleinen Body mit einem Link zur Weiterleitung mit zu schicken.

  • In dem Body könnte ein <meta http-equiv="refresh" content="0; url=http://example.com/"> als fallback verwendet werden [6], aber auch wenn der RFC das vorschlägt ist die Methode lange deprecated.
  • Der Link im Body sowie das Meta-Tag können als fallback dienen, wenn der Status-Code recht neu ist.
  • Status-Code 302, 303 und 307 spezifizieren die Cachebarkeit nicht mehr explizit im neusten RFC → immer Cache-Controll mitschicken. Cloudflare speichert zum Beispiel auch 302 für ca. 20 Minuten.

Weiteres aus dem 3xx Block

  • 300 (Multiple Choices): Mehrere Versionen des Dokuments sind unter genaueren URIs erreichbar. Die vom Server bevorzugte Version steht im Location Header. Alle Versionen stehen im Body (Browser dürfte, wenn er den Body verstünde, passende Version selber auswählen). [7]
  • 304 (Not Modified): Wer kennt ihn nicht? Ansonsten RFC 7232 lesen :)
  • 305 (Use Proxy): Deprecated [8]
  • 306: Der Status-Code ist reserviert und war mal als “Switch Proxy” angedacht [9]

Weiterleitungen mit JavaScript

Weiterleiten/Neuladen mit Refresh Header/Meta-Tag

Dieses Verfahren wurde nie standardisiert und ist seit HTML 4.0 explizit unerwünscht [10]. Dennoch existiert es als living Standard in den meisten Browsern. Folgende Syntax sollte von den meisten Browsern verstanden werden[11][12]:

${SECONDS}; url=${URL}

Die URL kann absolut oder Relativ sein, wird sie Weg gelassen wird die aktuelle Seite neu geladen. Werden die Sekunden weg gelassen wird sofort neu geladen.

Das ganze kann dann entweder in einen HTTP Header eingebaut werden:

Refresh: 5; url=http://example.com

oder als Meta-Tag in den HTML Head:

  <meta http-equiv="refresh" content="5;url=http://www.example.org/fresh-as-a-summer-breeze" />

Anwendungsfälle

Weiterleiten auf die nicht JavaScript Version einer Webseite

<noscript>
    <meta http-equiv="refresh" content="0; url=?nojs" />
</noscript>

Triviales Neuladen eines Dashboards

Das kann verwendet werden, wenn ein Dashboard ohne viel Aufwand alle paar Minuten neu geladen werden soll. Als HTTP Header kann man es auch fremden Seiten einschleusen, für die man nur Proxy ist. Mit etwas mehr Aufwand würde man vmtl. Ajax verwenden um nur die Daten des Dashboards zu aktualisieren.

Fallback für 3xx Bodys

Siehe oben.

Weitere Infos

computer/web/redirects.1549773359.txt.gz · Last modified: 2020-11-18 18:10 (external edit)