Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
En-tête If-Match
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'en-tête de requête HTTPIf-Match rend une requêteconditionnelle.Un serveur retournera les ressources pour les méthodesGET etHEAD, ou acceptera l'envoi d'une ressource pourPUT et d'autres méthodes non sûres, uniquement si la ressource correspond à l'une des valeursETag dans l'en-tête de requêteIf-Match.Si la condition n'est pas remplie, la réponse412 Precondition Failed est renvoyée.
La comparaison avec l'ETag stockée utilise l'algorithme de comparaison forte, ce qui signifie que deux fichiers sont considérés comme identiques octet par octet.Si uneETag listée possède le préfixeW/ indiquant une entité faible (Weak en anglais), cet algorithme de comparaison ne la fera jamais correspondre.
Il existe deux cas d'utilisation courants :
- Pour les méthodes
GETetHEAD, utilisé avec l'en-têteRange, cela garantit que les nouvelles plages demandées proviennent de la même ressource que la précédente. - Pour les autres méthodes, et en particulier pour
PUT,If-Matchpeut être utilisé pour éviter leproblème de mise à jour perdue(angl.).Il permet de vérifier que la modification d'une ressource que l'utilisateur·ice souhaite envoyer n'écrasera pas une autre modification effectuée depuis la récupération de la ressource d'origine.
| Type d'en-tête | En-tête de requête |
|---|---|
| En-tête de requête interdit | Non |
Dans cet article
Syntaxe
If-Match: <etag_value>If-Match: <etag_value>, <etag_value>, …Directives
<etag_value>Balises d'entité représentant de façon unique les ressources demandées.Ce sont des chaînes de caractèresASCII placées entre guillemets doubles (comme
"675af34563dc-tr34").Elles peuvent être préfixées parW/pour indiquer qu'elles sont « faibles », c'est-à-dire qu'elles représentent la ressource sémantiquement mais pas octet par octet.Cependant, dans un en-têteIf-Match, les balises d'entité faibles ne correspondront jamais.*L'astérisque est une valeur spéciale représentant n'importe quelle ressource.Notez que cela doit correspondre à
falsesi le serveur d'origine n'a pas de représentation actuelle pour la ressource cible.
Exemples
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"If-Match: "67ab43", "54ed21", "7892dd"If-Match: *Spécifications
| Specification |
|---|
| HTTP Semantics> # field.if-match> |
Compatibilité des navigateurs
Voir aussi
- L'en-tête
ETag - Les en-têtes de requête conditionnelle
If-None-Match,If-Modified-Since,If-Unmodified-Since - Le code de statut
412 Precondition Failed