4. Status Code Definitions (Définitions des codes d'état)
4.1. 304 Not Modified (Non modifié)
Le code d'état 304 (Not Modified) indique qu'une requête GET ou HEAD conditionnelle a été reçue et aurait abouti à une réponse 200 (OK) si ce n'était le fait que la condition a été évaluée à false. En d'autres termes, il n'est pas nécessaire que le serveur transfère une représentation de la ressource cible car la requête indique que le client, qui a rendu la requête conditionnelle, possède déjà une représentation valide; le serveur redirige donc le client pour qu'il utilise cette représentation stockée comme s'il s'agissait de la charge utile d'une réponse 200 (OK).
Le serveur générant une réponse 304 DOIT générer l'un des champs d'en-tête suivants qui aurait été envoyé dans une réponse 200 (OK) à la même requête: Cache-Control, Content-Location, Date, ETag, Expires et Vary.
Étant donné que l'objectif d'une réponse 304 est de minimiser le transfert d'informations lorsque le destinataire possède déjà une ou plusieurs représentations en cache, un expéditeur NE DEVRAIT PAS générer de métadonnées de représentation autres que les champs énumérés ci-dessus, sauf si lesdites métadonnées existent dans le but de guider les mises à jour du cache (par exemple, Last-Modified pourrait être utile si la réponse n'a pas de champ ETag).
Les exigences pour un cache qui reçoit une réponse 304 sont définies dans la Section 4.3.4 de [RFC7234]. Si la requête conditionnelle provient d'un client sortant, tel qu'un agent utilisateur avec son propre cache envoyant un GET conditionnel à un proxy partagé, alors le proxy DEVRAIT transmettre la réponse 304 à ce client.
Une réponse 304 ne peut pas contenir de corps de message; elle est toujours terminée par la première ligne vide après les champs d'en-tête.
4.2. 412 Precondition Failed (Échec de précondition)
Le code d'état 412 (Precondition Failed) indique qu'une ou plusieurs conditions données dans les champs d'en-tête de la requête ont été évaluées à false lors du test sur le serveur. Ce code de réponse permet au client de placer des préconditions sur l'état actuel de la ressource (ses représentations et métadonnées actuelles) et, ainsi, d'empêcher l'application de la méthode de requête si la ressource cible est dans un état inattendu.