En-tête Sec-Purpose
Disponibilité limitée
Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.
Vous voulez une meilleure prise en charge pour cette fonctionnalité ? Dites-nous pourquoi.
L'en-tête de métadonnées de requête de récupération HTTP Sec-Purpose décrit le but pour lequel la ressource demandée est utilisée, lorsque ce but est autre que l'utilisation immédiate par l'agent utilisateur.
Le seul but actuellement défini est prefetch, ce qui indique que la ressource est demandée en prévision de son utilisation par une page vers laquelle il est probable que l'utilisateur·ice navigue dans un avenir proche, comme une page liée dans les résultats de recherche ou un lien sur lequel l'utilisateur·ice a survolé.
Le serveur peut utiliser cette information pour : ajuster la durée de mise en cache de la requête, refuser la requête ou éventuellement la traiter différemment lors du comptage des visites de page.
L'en-tête est envoyé lorsqu'une page est chargée et qu'elle contient un élément <link> avec l'attribut rel="prefetch".
Notez que si cet en-tête est défini, alors un en-tête Sec-Fetch-Dest dans la requête doit être défini sur empty (toute valeur dans l'attribut as de l'élément <link> est ignorée) et l'en-tête Accept doit correspondre à la valeur utilisée pour les requêtes de navigation normales.
| Type d'en-tête | En-tête de métadonnées de requête de récupération |
|---|---|
| En-tête de requête interdit | Oui (préfixe Sec-) |
| En-tête de requête autorisé par CORS | Non |
Syntaxe
Sec-Purpose: prefetch
Directives
Les jetons autorisés sont :
prefetch-
Le but est de précharger une ressource qui peut être nécessaire lors d'une navigation probable dans le futur.
Exemples
>Une requête de récupération préalable
Considérons le cas où un navigateur charge un fichier contenant un élément HTML <link> qui possède l'attribut rel="prefetch" et un attribut href contenant l'adresse d'un fichier image.
Le résultat de fetch() doit être une requête HTTP comportant les en-têtes Sec-Purpose: prefetch, Sec-Fetch-Dest: empty et une valeur Accept identique à celle utilisée par le navigateur pour la navigation entre les pages.
Un exemple d'un tel en-tête (sur Firefox) est donné ci-dessous :
GET /images/une_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
Note :
Au moment de la rédaction, Firefox définit incorrectement l'en-tête Accept comme Accept: */* pour les récupérations préalables.
L'exemple a été modifié pour montrer quelle doit être la valeur de Accept.
Ce problème peut être suivi dans le bogue Firefox 1836334 (angl.).
Spécifications
| Spécification |
|---|
| Fetch> # sec-purpose-header> |
| Prefetch> # sec-purpose-header> |
Compatibilité des navigateurs
Voir aussi
- Les en-têtes de métadonnées de requête de récupération
Sec-Fetch-Dest,Sec-Fetch-Mode,Sec-Fetch-Site,Sec-Fetch-User - L'entrée du glossaire Récupération préalable
- L'élément HTML
<link>avec l'attributrel="prefetch"