L'en-tête de requête HTTP If-None-Match permet de conditionner la requête. Pour les méthodes GET et HEAD, le serveur renvoie la ressource demandée, avec un statut 200, seulement si elle n'a pas un ETag correspondant à ceux fournis. Pour les autres méthodes, la requête ne sera traitée que si l'ETag de l'éventuelle ressource existante ne correspond à aucune des valeurs listées.

Quand la condition échoue pour les méthodes GET et HEAD, le serveur doit retourner un code statut HTTP 304 (Not Modified). Pour les méthodes appliquant des changements côté serveur, le code statut 412 (Precondition Failed) est utilisé. Notez que le serveur générant une réponse 304 DOIT générer toutes les en-têtes qui auraient été envoyées avec une réponse 200 (OK) à la même requête : Cache-Control, Content-Location, Date, ETag, Expires, and Vary.

La comparaison avec l'ETag stocké utilise l'algorithme de comparaison faible, c'est-à-dire que 2 fichiers sont considérés identiques pas seulement s'ils sont identiques octet à octet mais si leurs contenus sont équivalents. Par exemple, 2 pages dont seule la date de génération dans le pied de page diffère seraient considérées identiques.

Quand utilisé avec If-Modified-Since, il a la priorité (si le serveur le supporte).

Il y a 2 cas d'utilisation communs:

  • Pour les méthodes GET and HEAD, pour mettre à jour une entité en cache qui a un ETag associé.
  • Pour les autres méthodes, et en particulier pour PUT, If-None-Match avec pour valeur * peut être  utilisé pour sauver un fichier dont on ne sait pas s'il existe, garantissant qu'un autre téléversement n'a pas été fait avant, perdant les données du précédent chargement ; ce problème est une variation du problème de la mise à jour perdue.
Type d'en-tête En-tête de requête
Nom d'en-tête interdit non

Syntax

If-None-Match: "<valeur_etag>"
If-None-Match: "<valeur_etag>", "<valeur_etag>", …
If-None-Match: *

Directives

<etag_value>
Des tags d'entité représentant de façon unique les ressources demandées. Ce sont des chaînes de caractères ASCII entre guillemets doubles (comme "675af34563dc-tr34") et peuvent être préfixés par W/ pour indiquer que l'algorithme de comparaison faible doit être utilisé (inutile avec If-None-Match car il n'utilise que cet algorithme).
*
L'astérisque est une valeur spéciale représentant toute ressource. Ils ne sont utilies que quand on téléverse une ressource, habituellement avec PUT, pour vérifier si une autre ressource avec cette identité a déjà été téléversée avant.

Exemples

If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"

If-None-Match: W/"67ab43", "54ed21", "7892dd"

If-None-Match: *

Spécifications

Spécification Title
RFC 7232, section 3.2: If-None-Match Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests

Compatibilité navigateur

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
Support simple
ExpérimentaleObsolèteNon-standard
Chrome Support complet OuiEdge Support complet OuiFirefox Support complet OuiIE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui

Légende

Support complet  
Support complet
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.

Voir également

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, ekougs
Dernière mise à jour par : SphinxKnight,