Sec-Purpose

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Der HTTP-Sec-Purpose-Fetch Metadata Request Header gibt den Zweck an, für den die angeforderte Ressource verwendet wird, wenn dieser Zweck ein anderer ist als die unmittelbare Nutzung durch den User-Agent.

Der einzige derzeit definierte Zweck ist prefetch, was darauf hinweist, dass die Ressource im Voraus angefordert wird, da sie wahrscheinlich von einer Seite benötigt wird, zu der in naher Zukunft navigiert wird, wie beispielsweise eine Seite, die in Suchergebnissen verlinkt ist, oder ein Link, über den ein Benutzer geschwebt hat. Der Server kann dieses Wissen nutzen, um: das Ablaufdatum des Cachings für die Anfrage anzupassen, die Anfrage zu verweigern oder sie möglicherweise anders zu behandeln, wenn Seitenbesuche gezählt werden.

Der Header wird gesendet, wenn eine Seite geladen wird, die ein <link>-Element mit dem Attribut rel="prefetch" enthält. Beachten Sie, dass, wenn dieser Header gesetzt ist, ein Sec-Fetch-Dest-Header in der Anfrage auf empty gesetzt sein muss (ein beliebiger Wert im <link>-Attribut as wird ignoriert) und der Accept-Header mit dem Wert übereinstimmen sollte, der für normale Navigationsanforderungen verwendet wird.

Header-Typ Fetch Metadata Request Header
Verbotener Header-Name Ja (Sec--Präfix)
CORS-safelisted request header Nein

Syntax

http
Sec-Purpose: prefetch

Direktiven

Die erlaubten Tokens sind:

prefetch

Der Zweck ist, eine Ressource zu prefetchen, die möglicherweise in einer wahrscheinlichen zukünftigen Navigation benötigt wird.

Beispiele

Eine Prefetch-Anfrage

Betrachten Sie den Fall, in dem ein Browser eine Datei mit einem <link>-Element lädt, das das Attribut rel="prefetch" und ein href-Attribut mit der Adresse einer Bilddatei enthält. Das resultierende fetch() sollte zu einer HTTP-Anfrage führen, bei der Sec-Purpose: prefetch, Sec-Fetch-Dest: empty und ein Accept-Wert verwendet werden, der mit dem des Browsers für die Seitennavigation identisch ist.

Ein Beispiel für einen solchen Header (in Firefox) wird unten angegeben:

http
GET /images/some_image.png HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Sec-Purpose: prefetch
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: same-origin
Pragma: no-cache
Cache-Control: no-cache

Hinweis: Zum Zeitpunkt des Schreibens setzt Firefox den Accept-Header bei Prefetches fälschlicherweise auf Accept: */*. Das Beispiel wurde so geändert, dass der Accept-Wert gezeigt wird, der verwendet werden sollte. Dieses Problem kann im Firefox Bug 1836334 verfolgt werden.

Spezifikationen

Specification
Fetch Standard
# sec-purpose-header
Prefetch
# sec-purpose-header

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch