If-Match: |
Si correspond |
HTTP |
Entêtes |
Syntaxe
If-Match: etag_value
|
If-Match: etag_value, etag_value,...
|
If-Match: *
|
Paramètres
Nom |
Description |
etag_value |
Ce paramètre permet d'indiquer la balise d'entité représentant de manière unique les ressources demandées. Il s'agit d'une chaîne de caractères ASCII placés entre guillemets doubles. |
* |
Ce paramètre permet d'indiquer n'importe quelle ressource. |
Description
Ce champ d'entête permet d'indiquer la condition de la requête. Pour les méthodes GET et HEAD, le serveur Web renverra la ressource demandée uniquement si elle correspond à l'un des champs d'entête ETags répertoriés. Pour PUT et d'autres méthodes non sûres, il ne téléchargera la ressource que dans ce cas.
Remarques
- Le champ d'entête If-Match: permet de subordonner la méthode de requête au serveur d'origine destinataire soit en ayant au moins une représentation actuelle de la ressource cible,
lorsque la valeur du champ est «*», soit en ayant une représentation actuelle de la ressource cible possédant une balise d'entité correspondant à un membre de la liste des balises d'entité
fournie dans la valeur de ce champ.
- Un serveur d'origine doit utiliser une fonction de comparaison assez forte lors de la comparaison des balises d'entité pour If-Match:, car le client souhaite que cette condition
préalable empêche l'application de la méthode en cas de modification des données de représentation.
- Le champ d'entête If-Match: est le plus souvent utilisé avec des méthodes de changement d'état (par exemple, POST, PUT, DELETE) pour éviter les écrasements
accidentels lorsque plusieurs agents utilisateurs peuvent agir en parallèle sur la même ressource (c'est-à-dire pour éviter le problème de perte de mise à jour). Il peut également être
utilisé avec des méthodes sûres pour abandonner une requête si la représentation sélectionnée ne correspond pas à une déjà aux données entreposée (ou partiellement entreposée) d'une requête
précédente.
- Un serveur d'origine recevant un champ d'entête If-Match: doit évaluer la condition avant d'exécuter la méthode. Si la valeur de champ est «*», la condition est fausse si le
serveur d'origine n'a pas de représentation actuelle pour la ressource cible. Si la valeur de champ est une liste de balises d'entité, la condition est fausse si aucune des balises
répertoriées ne correspond à la balise d'entité de la représentation sélectionnée.
- Un serveur d'origine ne doit pas exécuter la méthode demandée si une condition If-Match: reçue est évaluée à faux; à la place, le serveur d'origine doit répondre avec le code
d'état 412 Precondition Failed ou l'un des codes d'état 2xx Successful si le serveur d'origine a vérifié qu'un changement d'état est demandé et que l'état final est
déjà reflétée dans l'état actuel de la ressource cible (c'est-à-dire que la modification demandée par l'agent utilisateur a déjà réussi, mais l'agent utilisateur peut ne pas en être
conscient, peut-être parce que la réponse précédente a été perdue ou qu'une modification compatible a été effectuée par un autre agent utilisateur). Dans ce dernier cas, le serveur
d'origine ne doit pas envoyer de champ d'entête de validateur dans la réponse, sauf s'il peut vérifier que la requête est un double d'une modification immédiatement antérieure effectuée
par le même agent utilisateur.
- Le champ d'entête If-Match: peut être ignoré par les caches et les intermédiaires car il ne s'applique pas à une réponse entreposée.
Dernière mise à jour : Vendredi, le 10 janvier 2020