Sec-Purpose header
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 etwas anderes als die unmittelbare Nutzung durch den User-Agent ist.
Der einzige Zweck, der derzeit definiert ist, ist prefetch
, was darauf hinweist, dass die Ressource in Erwartung angefordert wird, dass sie von einer Seite benötigt wird, zu der wahrscheinlich in naher Zukunft navigiert wird, wie eine Seite, die in Suchergebnissen verlinkt ist oder ein Link, über den ein Nutzer geschwebt hat.
Der Server kann dieses Wissen nutzen, um das Ablaufdatum des Caches für die Anfrage anzupassen, die Anfrage zu verweigern oder sie vielleicht anders zu behandeln, wenn Seitenaufrufe 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 (jeder Wert im <link>
Attribut as
wird ignoriert) und der Accept
-Header sollte mit dem für normale Navigationsanfragen verwendeten Wert übereinstimmen.
Header-Typ | Fetch Metadata Request Header |
---|---|
Verbotener Anforderungsheader | Ja (Sec- -Präfix) |
CORS-safelisted request header | Nein |
Syntax
Sec-Purpose: prefetch
Direktiven
Die erlaubten Tokens sind:
prefetch
-
Der Zweck ist das Vorabladen einer Ressource, die in einer wahrscheinlichen zukünftigen Navigation benötigt werden könnte.
Beispiele
Eine Vorababruf-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 enthält, das die Adresse einer Bilddatei enthält.
Der resultierende fetch()
sollte in einer HTTP-Anfrage resultieren, in der Sec-Purpose: prefetch
, Sec-Fetch-Dest: empty
und ein Accept
-Wert verwendet werden, der derselbe ist, den der Browser für die Seitennavigation verwendet.
Ein Beispiel für einen solchen Header (auf 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 der Erstellung setzt Firefox den Accept
-Header für Vorabrufe fälschlicherweise als Accept: */*
.
Das Beispiel wurde angepasst, um zu zeigen, wie der Accept
-Wert sein sollte.
Dieses Problem kann in Firefox Bug 1836334 nachverfolgt werden.
Spezifikationen
Specification |
---|
Fetch # sec-purpose-header |
Prefetch # sec-purpose-header |
Browser-Kompatibilität
Siehe auch
Sec-Fetch-Dest
,Sec-Fetch-Mode
,Sec-Fetch-Site
,Sec-Fetch-User
Fetch Metadata Request Headers- Prefetch (Glossar)
<link>
-Element mit Attributrel="prefetch"