Sec-Purpose

Der HTTP Sec-Purpose Fetch-Metadaten-Anforderungsheader zeigt den Zweck an, für den die angeforderte Ressource verwendet wird, wenn dieser Zweck nicht der unmittelbare Gebrauch durch den User-Agent ist.

Der einzige derzeit definierte Zweck ist prefetch, was darauf hinweist, dass die Ressource in Erwartung angefordert wird, dass sie für eine Seite benötigt wird, die wahrscheinlich in naher Zukunft navigiert wird, wie z.B. eine in Suchergebnissen verlinkte Seite oder ein Link, den ein Benutzer überfahren hat. Der Server kann dieses Wissen nutzen, um: das Ablaufdatum des Cache 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 werden muss (jeder Wert im <link> Attribut as wird ignoriert) und der Accept Header sollte mit dem Wert übereinstimmen, der für normale Navigationsanfragen verwendet wird.

Header-Typ Fetch-Metadaten-Anforderungsheader
Verbotener Headername Ja (Sec- Präfix)
CORS-safelisted Anforderungsheader Nein

Syntax

http
Sec-Purpose: prefetch

Direktiven

Die erlaubten Tokens sind:

prefetch

Der Zweck ist, eine Ressource vorab zu laden, die in einer wahrscheinlichen zukünftigen Navigation benötigt werden könnte.

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 gesetzt sind, der dem entspricht, den der Browser für die Seitennavigation verwendet.

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 fälschlicherweise als Accept: */* für Prefetches. Das Beispiel wurde verändert, um zu zeigen, wie der Accept-Wert sein sollte. Dieses Problem kann in 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