Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

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 HTTP If-Match rend une requête conditionnelle. Un serveur retournera les ressources pour les méthodes GET et HEAD, ou acceptera l'envoi d'une ressource pour PUT et d'autres méthodes non sûres, uniquement si la ressource correspond à l'une des valeurs ETag dans l'en-tête de requête If-Match. Si la condition n'est pas remplie, la réponse 412 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 une ETag listée possède le préfixe W/ 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 GET et HEAD, utilisé avec l'en-tête Range, 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-Match peut être utilisé pour éviter le problè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

Syntaxe

http
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ères ASCII placées entre guillemets doubles (comme "675af34563dc-tr34"). Elles peuvent être préfixées par W/ 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ête If-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 à false si le serveur d'origine n'a pas de représentation actuelle pour la ressource cible.

Exemples

http
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"

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

If-Match: *

Spécifications

Specification
HTTP Semantics
# field.if-match

Compatibilité des navigateurs

Voir aussi