Zum Hauptinhalt springen

3. Link Serialisation in HTTP Headers (Link-Serialisierung in HTTP-Headern)

Das Link-Entity-Headerfeld bietet eine Möglichkeit, einen oder mehrere Links in HTTP-Headern zu serialisieren. Es ist semantisch äquivalent zum HTML-Element <link>.

Link       = #link-value
link-value = "<" URI-Reference ">" *( OWS ";" OWS link-param )
link-param = token BWS [ "=" BWS ( token / quoted-string ) ]

Jeder link-value übermittelt einen Link. Das Link-Ziel wird durch die URI-Reference in spitzen Klammern (< und >) dargestellt.

Standardmäßig ist der Kontext eines Links der effektive Anfrage-URI (Effective Request URI) der Nachricht, in der er erscheint, wie in Abschnitt 5.5 von [RFC7230] definiert.

Wenn vorhanden, wird der Kontext durch die Ziel-IRI bestimmt. Beachten Sie, dass jede IRI gemäß Abschnitt 2 in einen URI umgewandelt werden muss, um im Link-Headerfeld dargestellt zu werden.

3.3. Relation Type (Relationstyp)

Der Link-Relationstyp wird durch den Wert des „rel"-Parameters identifiziert, dessen Wert MUSS eines der folgenden enthalten:

  • einen registrierten Relationstyp-Namen (siehe Abschnitt 2.1.1), oder
  • einen Erweiterungs-Relationstyp (siehe Abschnitt 2.1.2)

Registrierte Relationstyp-Namen und Erweiterungs-Relationstypen können im selben „rel"-Parameterwert verwendet werden, getrennt durch ein oder mehrere Leerzeichen.

relation-type  = reg-rel-type / ext-rel-type
reg-rel-type = LOALPHA *( LOALPHA / DIGIT / "." / "-" )
ext-rel-type = URI

Beachten Sie, dass Erweiterungs-Relationstypen als URIs kodiert sind; das bedeutet, dass alle reservierten Zeichen gemäß Abschnitt 2 von [RFC3986] prozentual kodiert werden müssen.

3.4. Target Attributes (Zielattribute)

Die Zielattribute eines Links werden im link-value als link-param dargestellt.

3.4.1. Serialisation-Defined Attributes (Serialisierungsdefinierte Attribute)

Der „rel"-Parameter MUSS vorhanden sein, DARF ABER NICHT mehrfach erscheinen; wenn er fehlt oder mehrfach erscheint, ist der gesamte link-value ungültig.

Ebenso MUSS der „anchor"-Parameter (falls vorhanden) nur einmal erscheinen; wenn er mehrfach erscheint, ist der gesamte link-value ungültig.

Weitere häufige Zielattribute sind:

  • hreflang: Gibt die Sprache der Zielressource an. Der Wert MUSS [RFC5646] entsprechen.
  • media: Gibt das beabsichtigte Anzeigemedium der Zielressource an. Der Wert MUSS [W3C.REC-css3-mediaqueries-20120619] entsprechen.
  • title: Ein menschenlesbarer Bezeichner zur Kennzeichnung der Zielressource.
  • title*: Internationalisierte Version des „title"-Parameters mit der in [RFC8187] definierten Kodierung.
  • type: Gibt einen Hinweis auf den Medientyp der Zielressource.

3.4.2. Extension Attributes (Erweiterungsattribute)

Andere link-param-Werte sind Erweiterungs-Zielattribute, die von Link-Relationstypen oder Link-Anwendungen definiert und verwendet werden können.

Das Vorhandensein oder Fehlen von Erweiterungs-Zielattributen SOLLTE den link-value nicht ungültig machen, KANN aber seine Verwendung in bestimmten Anwendungen beeinflussen.

Zum Beispiel:

Link: <http://example.com/TheBook/chapter2>; rel="previous";
title="previous chapter"

Gibt an, dass das „vorherige Kapitel" unter http://example.com/TheBook/chapter2 zu finden ist.

Link: </>; rel="http://example.net/foo"

Gibt an, dass die Stammressource ("/") mit dem benutzerdefinierten Erweiterungs-Relationstyp „http://example.net/foo" in Beziehung steht.

Link: </terms>; rel="copyright"; anchor="#foo"

Gibt an, dass die Copyright-Ressource für die Ressource mit dem Bezeichner „foo" unter /terms zu finden ist.

Mehrere Links können in einem einzigen Link-Headerfeld übermittelt werden:

Link: </TheBook/chapter2>; rel="previous"; title*=UTF-8'de'letztes%20Kapitel,
</TheBook/chapter4>; rel="next"; title*=UTF-8'de'n%c3%a4chstes%20Kapitel

Hier verwenden beide Links den internationalisierten title-Parameter.

Es können auch mehrere Link-Headerfelder verwendet werden:

Link: </TheBook/chapter2>; rel="previous"
Link: </TheBook/chapter4>; rel="next"