Both sides previous revisionPrevious revisionNext revision | Previous revision |
computer:web:redirects [2019-02-10 05:35] – skrupellos | computer:web:redirects [2020-11-18 18:11] (current) – external edit 127.0.0.1 |
---|
^ ::: ^ ::: ^ Erste ^ Aktuelle [(https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml)] ^ ::: ^ ::: ^ ::: ^ | ^ ::: ^ ::: ^ Erste ^ Aktuelle [(https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml)] ^ ::: ^ ::: ^ ::: ^ |
| 301 | Moved Permanently | [[https://www.greenbytes.de/tech/webdav/rfc1945.html#rfc.section.9.3|RFC 1945]] (1996) | [[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.2|RFC 7231]] (2014) | Permanent | (V)\\ (by default) | //Möglich// (üblich [(:rfc7231-6.4.p.3.1)]):\\ POST -> GET | | | 301 | Moved Permanently | [[https://www.greenbytes.de/tech/webdav/rfc1945.html#rfc.section.9.3|RFC 1945]] (1996) | [[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.2|RFC 7231]] (2014) | Permanent | (V)\\ (by default) | //Möglich// (üblich [(:rfc7231-6.4.p.3.1)]):\\ POST -> GET | |
| 302 | Found \\ <wrap lo>(v1.0: "Moved temporarily")</wrap> | [[https://www.greenbytes.de/tech/webdav/rfc1945.html#rfc.section.9.3|RFC 1945]] (1996) | [[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.3|RFC 7231]] (2014) | Zeitweise | (V)\\ (not by default) [(https://www.greenbytes.de/tech/webdav/rfc2616.html#rfc.section.10.3.3.p.1)] | //Möglich// (üblich [(:rfc7231-6.4.p.3.1)]):\\ POST -> GET | | | 302 | Found \\ <wrap lo>(v1.0: "Moved temporarily")</wrap> | [[https://www.greenbytes.de/tech/webdav/rfc1945.html#rfc.section.9.3|RFC 1945]] (1996) | [[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.3|RFC 7231]] (2014) | Zeitweise | (V)\\ (not by default) | //Möglich// (üblich [(:rfc7231-6.4.p.3.1)]):\\ POST -> GET | |
| 303 | See Other | [[https://www.greenbytes.de/tech/webdav/rfc2616.html#rfc.section.10.3.4|RFC 2616]] (1999)\\ <wrap lo>[[https://tools.ietf.org/html/rfc2068#section-10.3.4|RFC 2068]] (1997)</wrap> | [[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.4|RFC 7231]] (2014) | Zeitweise | (X) [(https://www.greenbytes.de/tech/webdav/rfc2616.html#rfc.section.10.3.4.p.1)] | //Verpflichtend//:\\ * -> GET oder HEAD | | | 303 | See Other | [[https://www.greenbytes.de/tech/webdav/rfc2616.html#rfc.section.10.3.4|RFC 2616]] (1999)\\ <wrap lo>[[https://tools.ietf.org/html/rfc2068#section-10.3.4|RFC 2068]] (1997)</wrap> | [[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.4|RFC 7231]] (2014) | Zeitweise | (V)\\ (not by default) | //Verpflichtend//:\\ * -> GET oder HEAD | |
| 307 | Temporary Redirect | [[https://www.greenbytes.de/tech/webdav/rfc2616.html#rfc.section.10.3.8|RFC 2616]] (1999) | [[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.7|RFC 7231]] (2014) | Zeitweise | (V)\\ (not by default) [(https://www.greenbytes.de/tech/webdav/rfc2616.html#rfc.section.10.3.8.p.1)] | -- | | | 307 | Temporary Redirect | [[https://www.greenbytes.de/tech/webdav/rfc2616.html#rfc.section.10.3.8|RFC 2616]] (1999) | [[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.7|RFC 7231]] (2014) | Zeitweise | (V)\\ (not by default) | -- | |
| 308 | Permanent Redirect | [[https://www.greenbytes.de/tech/webdav/rfc7238.html|RFC 7238]] (2014) | [[https://www.greenbytes.de/tech/webdav/rfc7538.html|RFC 7538]] (2015) | Permanent | (V)\\ (by default) | -- | | | 308 | Permanent Redirect | [[https://www.greenbytes.de/tech/webdav/rfc7238.html|RFC 7238]] (2014) | [[https://www.greenbytes.de/tech/webdav/rfc7538.html|RFC 7538]] (2015) | Permanent | (V)\\ (by default) | -- | |
| |
| |
[(rfc7231-6.4.p.3.1>[[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.p.3.1]].)] | [(rfc7231-6.4.p.3.1>[[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.p.3.1]].)] |
| |
<WRAP center round info 80%> | <WRAP center round info 80%> |
Nicht vergessen einen //kleinen// Body mit einem Link zur Weiterleitung mit zu schicken. | **Nicht vergessen**: |
| * Einen //kleinen// Body mit einem Link zur Weiterleitung mit zu schicken. |
| * Immer ''Cache-Control'' mitschicken. |
</WRAP> | </WRAP> |
| |
* In dem Body könnte ein ''%%<meta http-equiv="refresh" content="0; url=http://example.com/">%%'' als fallback verwendet werden [(https://www.greenbytes.de/tech/webdav/rfc7538.html#rfc.section.4)], aber auch wenn der RFC das vorschlägt ist die Methode lange deprecated. | * In dem Body könnte ein ''%%<meta http-equiv="refresh" content="0; url=http://example.com/">%%'' als fallback verwendet werden [(https://www.greenbytes.de/tech/webdav/rfc7538.html#rfc.section.4)], 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. | * 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. [[https://support.cloudflare.com/hc/en-us/articles/200168326-Are-301-and-302-redirects-cached-by-CloudFlare-|Cloudflare speichert]] zum Beispiel auch 302 für ca. 20 Minuten. | |
| |
* [[https://audisto.com/insights/guides/31/|Lange Abhandlung über Weiterleitungen]] | |
* [[http://stevesouders.com/tests/redirects/index.php|Online tool zum testen von Weiterleitungen]] | ==== Änderung der Speicherbarkeit 2014 ==== |
| Seit [[https://www.greenbytes.de/tech/webdav/rfc7231.html|RFC 7231]] (2014) ist die Speicherbarkeit von Status-Code 302, 303 und 307 nicht mehr explizit definiert. Die Antworten sind daher alle speicherbar, aber nicht standardmäßig [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.1.p.2]])]. |
| |
| ^ Status-Code ^ Speicherbarkeit ^^ |
| ^ ::: ^ Vorher ^ Nachher ^ |
| | 302 | (V) (not by default) [(https://www.greenbytes.de/tech/webdav/rfc2616.html#rfc.section.10.3.3.p.1)] | (V) (not by default) [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.3]])] | |
| | 303 | (X) [([[https://www.greenbytes.de/tech/webdav/rfc2616.html#rfc.section.10.3.4.p.1]])] | (V) (not by default) [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.4]])] | |
| | 307 | (V) (not by default) [([[https://www.greenbytes.de/tech/webdav/rfc2616.html#rfc.section.10.3.8.p.1]])] | (V) (not by default) [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.7]])] | |
| |
| Es ist daher Ratsam immer ''Cache-Control'' mitschicken. [[https://support.cloudflare.com/hc/en-us/articles/200168326-Are-301-and-302-redirects-cached-by-CloudFlare-|Cloudflare speichert]] zum Beispiel auch 302 für ca. 20 Minuten. |
| |
| |
* **305 (Use Proxy)**: Deprecated [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.5.p.1]])] | * **305 (Use Proxy)**: Deprecated [([[https://www.greenbytes.de/tech/webdav/rfc7231.html#rfc.section.6.4.5.p.1]])] |
* **306**: Der Status-Code ist reserviert und war mal als "Switch Proxy" angedacht [([[https://tools.ietf.org/html/draft-cohen-http-305-306-responses-00]])] | * **306**: Der Status-Code ist reserviert und war mal als "Switch Proxy" angedacht [([[https://tools.ietf.org/html/draft-cohen-http-305-306-responses-00]])] |
| |
| ==== Weitere Infos ==== |
| * [[https://audisto.com/insights/guides/31/|Lange Abhandlung über Weiterleitungen]] |
| * [[http://stevesouders.com/tests/redirects/index.php|Online tool zum testen von Weiterleitungen]] |
| |
===== Weiterleitungen mit JavaScript ===== | ===== Weiterleitungen mit JavaScript ===== |
| ==== Mit neuem Eintrag in der History ==== |
| Die folgenden drei Statements haben die identische Funktion [([[https://developer.mozilla.org/en-US/docs/Web/API/Window/location#Example_.231.3A_Navigate_to_a_new_page]])]. Sie leiten den Benutzer weiter und erzeugen dabei einen weiteren Eintrag in der Histroy. Wenn man von Seite A auf Seite B geht, wo dann die Weiterleitung auf Seite C stattfindet, dann landet der Benutzer mit dem Zurück-Button wieder auf Seite B. |
| <code javascript> |
| location = "http://www.example.com/"; |
| location.href = "http://www.example.com/"; |
| location.assign("http://www.example.com/"); |
| </code> |
| |
| ==== Mit ersetztem Eintrag in der History ==== |
| Ersetzt den aktuellen Eintrag in der History. Wenn man von Seite A auf Seite B geht, wo dann die Weiterleitung auf Seite C stattfindet, dann landet der Benutzer mit dem Zurück-Button wieder auf Seite A: |
| <code javascript> |
| document.location.replace("http://www.example.com/"); |
| </code> |
| |
| ==== Seite Neuladen ==== |
| Dies ist nur zur Vollständigkeit da, um eine Entsprechung für das [[#weiterleitenneuladen_mit_refresh_headermeta-tag|Meta-Data Kapitel]] zu liefern. |
| |
| Die folgende Funktion läd die Webseite neu. Ist der Parameter ''false'' oder nicht angegeben, kann die Webseite vom Cache geladen werden [([[https://developer.mozilla.org/en-US/docs/Web/API/Location/reload]])]. |
| |
| <code javascript> |
| document.location.reload(forcedReload); |
| </code> |
| |
===== Weiterleiten/Neuladen mit Refresh Header/Meta-Tag ===== | ===== Weiterleiten/Neuladen mit Refresh Header/Meta-Tag ===== |
Dieses Verfahren wurde nie standardisiert und ist seit HTML 4.0 //explizit unerwünscht// [([[https://www.w3.org/TR/1998/REC-html40-19980424/struct/global.html#h-7.4.4.2]])]. Dennoch existiert es als living Standard in den meisten Browsern. Folgende Syntax sollte von den meisten Browsern verstanden werden[([[https://dxr.mozilla.org/firefox/source/docshell/base/nsDocShell.cpp#4499]])][([[http://www.otsukare.info/2015/03/26/refresh-http-header]])]: | Dieses Verfahren wurde nie standardisiert und ist seit HTML 4.0 //explizit unerwünscht// [([[https://www.w3.org/TR/1998/REC-html40-19980424/struct/global.html#h-7.4.4.2]])]. Dennoch existiert es als living Standard in den meisten Browsern. Folgende Syntax sollte von den meisten Browsern verstanden werden[([[https://dxr.mozilla.org/firefox/source/docshell/base/nsDocShell.cpp#4499]])][([[http://www.otsukare.info/2015/03/26/refresh-http-header]])]: |
oder als Meta-Tag in den HTML Head: | oder als Meta-Tag in den HTML Head: |
<code html> | <code html> |
<meta http-equiv="refresh" content="5;url=http://www.example.org/fresh-as-a-summer-breeze" /> | <meta http-equiv="refresh" content="5; url=http://www.example.org/fresh-as-a-summer-breeze" /> |
</code> | </code> |
| |