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