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
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:
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
Sec-Fetch-Dest
,Sec-Fetch-Mode
,Sec-Fetch-Site
,Sec-Fetch-User
Fetch-Metadaten-Anforderungsheader- Prefetch (Glossar)
<link>
Element mit Attributrel="prefetch"