Le code d’état HTTP 304 non modifié indique un problème de communication entre le navigateur d’un utilisateur et le serveur d’un site web. Si vous ou vos utilisateurs rencontrent ce code d’état sur votre site, cela peut bloquer entièrement l’accès à votre contenu.

Comme il peut se situer du côté du serveur ou du client, trouver la source du problème peut demander un peu de travail. Heureusement, il existe plusieurs techniques infaillibles pour le dépanner.

Dans cet article, nous allons parler des codes d’état HTTP et expliquer ce qu’est le code d’état HTTP 304. Nous vous présenterons ensuite six méthodes que vous (ou vos visiteurs) pouvez utiliser pour le corriger.

Commençons !

Introduction aux codes d’état HTTP

Pour comprendre le code HTTP 304, il faut d’abord comprendre les codes de statut. Pour simplifier, chaque fois que vous faites une requête à votre navigateur – par exemple en accédant à un site web particulier – un code de statut HTTP est envoyé entre votre navigateur et le serveur afin d’échanger des informations.

Il existe plus de 40 codes de statut différents qui peuvent être impliqués dans cette communication. Cependant, il n’y en a qu’une poignée que vous rencontrerez probablement directement. Lorsque vous rencontrez un code de statut, cela signifie généralement que quelque chose a mal tourné.

Les codes de statut HTTP appartiennent à l’une des cinq catégories, numérotées entre les 100 et les 500. Chaque série indique un type de problème différent. Par exemple, les codes d’erreur qui tombent dans les 400, comme l’erreur “404 Not Found” et ”l’erreur 401”, signifient généralement qu’il y a eu un problème avec la demande et que le site ou la page en question était inaccessible.

En revanche, les codes de type 300, comme le code d’état HTTP 304 sur lequel nous allons nous concentrer dans cet article, sont des codes de redirection. Ils indiquent clairement que l’information demandée a été remplacée, de façon temporaire ou permanente, par une autre ressource.

Lorsque vous rencontrez l’un de ces codes d’état, cela signifie que des mesures supplémentaires doivent être prises.

Qu’est-ce que le code d’état HTTP 304 ?

HTTP 304, parfois appelé « 304 Not Modified », est un code qui communique à votre navigateur que « La ressource demandée n’a pas été modifiée depuis la dernière fois que vous y avez accédé ».

L’Internet Engineering Task Force (IETF) définit le code d’état 304 Not Modified comme suit :

Le code d’état 304 (Not Modified) indique qu’une requête conditionnelle GET ou HEAD a été reçue et aurait donné lieu à une réponse 200 (OK) si la condition n’avait pas été évaluée comme fausse. En d’autres termes, le serveur n’a pas besoin de transférer une représentation de la ressource cible, car la requête indique que le client, qui a fait la requête conditionnelle, dispose déjà d’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).

Essentiellement, votre navigateur (ou celui de votre visiteur) est informé par le serveur que les ressources stockées (mises en cache) dans le navigateur n’ont pas été modifiées depuis la dernière fois que vous avez visité cette page.

À son tour, votre navigateur récupère une version enregistrée de la page web à partir du cache. L’objectif est d’améliorer la vitesse et la diffusion de la page, en évitant à votre navigateur de devoir télécharger plusieurs fois les mêmes informations.

Consultez notre guide vidéo sur le code d’état 304 Not Modified et toutes les redirections 3xx

Comprendre les requêtes HTTP 304

Lorsque votre navigateur stocke une ressource dans le cache, il conserve ce que l’on appelle l’information « Last-Modified header » envoyée par le serveur. Si un navigateur reçoit une demande pour une page web dont il a une copie enregistrée, mais qu’il ne sait pas s’il a la dernière version, il envoie une demande de « validation conditionnelle » au serveur.

Le navigateur communique au serveur la date et l’heure de la dernière modification de la copie de la ressource dont il dispose, via l’en-tête « If-Modified-Since » ou « If-None-Match ». Le serveur inspecte ces en-têtes et examine également la valeur ETag. Cette dernière est un identifiant unique utilisé pour spécifier la version d’une ressource particulière.

Si les valeurs de ces fichiers sont les mêmes, le serveur envoie l’en-tête de réponse HTTP 304 Not Modified et le navigateur utilise la copie en cache de la ressource.

Si la copie du navigateur est périmée, c’est-à-dire si le fichier a été modifié depuis la dernière requête, il envoie un code HTTP 200 et une nouvelle copie est utilisée.

Malheureusement, il y a quelques problèmes qui peuvent provoquer une réponse d’erreur HTTP 304 alors qu’elle n’est pas censée se produire. Les causes les plus courantes sont les suivantes :

  • Configuration du serveur ou questions relatives au serveur de noms de domaine (DNS)
  • Une ressource mise en cache qui est infectée ou corrompue (c’est-à-dire un logiciel malveillant ou un virus affectant le navigateur)

Le code d’état 304 peut être dû à un problème du côté du serveur ou du client, ce qui peut nécessiter un certain dépannage pour le diagnostiquer et le résoudre.

Comment corriger un code d’état HTTP 304 (6 méthodes possibles)

Les méthodes que vous pouvez utiliser pour résoudre un code d’état HTTP 304 vont du plus simple au plus technique. Les moteurs de recherche sont responsables de l’indexation et de la mise en mémoire cache des sites web. Ce problème peut donc généralement être attribué au navigateur utilisé pour accéder au site.

Bien entendu, vous ne pouvez pas tout faire pour réparer les navigateurs des personnes qui tentent d’accéder à votre site.

Cependant, il peut être utile de comprendre ce qui peut causer le problème aux visiteurs, soit en essayant de trouver une solution de votre côté, soit en les aidant directement.

Dans cette optique, examinons six méthodes que vous pouvez utiliser pour tenter de corriger un code d’état HTTP 304 !

1. Effacer les données du cache du navigateur

Tout d’abord, le nettoyage des données de votre navigateur pour vider le cache peut vous aider à accéder à l’URL souhaitée. Cela inclut la suppression de toutes les données de navigation, des cookies et des informations du cache.

Les instructions pour l’exécution de ce processus varient selon le navigateur que vous utilisez. Si vous ne savez pas comment le faire sur votre appareil, n’hésitez pas à consulter notre guide sur le vidage du cache pour tous les principaux navigateurs.

2. Lancer une analyse des logiciels malveillants

Les navigateurs corrompus qui ont été infectés par un virus ou un logiciel malveillant peuvent être un autre coupable. C’est pourquoi il est conseillé d’effectuer une recherche de logiciels malveillants sur votre système. Cela peut aider à identifier et à supprimer tout problème qui pourrait interrompre ou interférer avec la requête d’en-tête, y compris les extensions problématiques.

Si vous utilisez la version Windows de Chrome, vous pouvez utiliser le scanner de logiciels malveillants et l’outil de nettoyage qui sont intégrés.

Pour ce faire, assurez-vous d’abord que vous utilisez la dernière version de Chrome en ouvrant un nouvel onglet et en cliquant sur l’icône du menu, puis sur À propos de Chrome :

La page "À propos" du navigateur Google Chrome
La page « À propos » du navigateur Google Chrome

Si votre navigateur n’est pas mis à jour à la version actuelle, vous pouvez résoudre ce problème au même endroit. Ensuite, ouvrez un nouvel onglet Chrome et entrez « chrome://settings/cleanup » dans la barre d’URL.

Appuyez sur la touche Entrée, puis, à côté de Trouver et supprimer les logiciels nuisibles, cliquez sur le bouton Trouver :

L'outil de nettoyage dans Google Chrome
L’outil de nettoyage dans Google Chrome

Le scanner commencera à fonctionner, puis fera un rapport avec les résultats.

Malheureusement, certains autres navigateurs comme Firefox et Edge, ainsi que les systèmes d’exploitation MacOS et Linux, ne sont pas livrés avec leurs propres versions de cet outil intégré. Vous devrez plutôt effectuer une analyse des logiciels malveillants à l’aide du logiciel antivirus de votre ordinateur.

3. Désactiver les extensions de votre navigateur

Les extensions de votre navigateur peuvent également être infectées et interférer avec les requêtes et la communication avec le serveur. C’est pourquoi vous pouvez aussi les désactiver. Vous pouvez le faire en ouvrant le menu de Chrome et en allant dans Paramètres > Extensions :

L'élément de menu Extensions dans les paramètres de Chrome
L’élément de menu Extensions dans les paramètres de Chrome

Sur la page Extensions, vous pouvez désactiver chacune d’entre elles en cliquant sur le “toggle” correspondant.

Vous pouvez également supprimer les extensions inutilisées ou périmées via le bouton Supprimer :

La page Extensions dans Google Chrome
La page Extensions dans Google Chrome

Là encore, ce processus varie légèrement en fonction de votre navigateur. L’objectif est de supprimer ou de désactiver manuellement chaque extension, puis de vérifier si cela résout le problème de HTTP 304.

Ensuite, vous pouvez essayer de les remettre en marche un par un.

4. Vider les DNS et réinitialiser le TCP/IP

Si le problème n’a pas été résolu à ce stade, il peut y avoir un problème avec les réglages DNS. Par exemple, l’utilisation d’une adresse IP obsolète peut entraîner un code d’état HTTP 304.

Par conséquent, une autre approche à essayer est de vider les DNS et de réinitialiser le TCP/IP.

Avec Chrome, vous pouvez vider les DNS du navigateur en entrant « chrome://net-internals/#dns » dans un nouvel onglet.

Appuyez sur la touche Entrée, puis cliquez sur le bouton Clear host cache :

La page des paramètres pour vider le cache DNS dans Chrome
La page des paramètres pour vider le cache DNS dans Chrome

Vous pouvez également vider le DNS et réinitialiser le TCP/IP dans votre système d’exploitation. Si vous avez besoin de conseils détaillés, vous pouvez vous référer à notre tutoriel sur la manière de vider le cache DNS (Windows, Mac, Chrome).

5. Essayer d’utiliser les DNS publics de Google

Une autre cause potentielle est une adresse DNS incorrecte. Il est donc intéressant d’utiliser le DNS public de Google pour voir si cela résout le problème.

Sous Windows, vous pouvez le faire en appuyant sur les touches Win + R. Dans la fenêtre Exécuter qui apparaît, tapez « ncpa.cpl » dans la boîte de commande, puis appuyez sur Ok.

Dans la fenêtre Connexions réseau qui s’ouvre ensuite, localisez la connexion réseau que vous utilisez et cliquez dessus avec le bouton droit de la souris. Ensuite, sélectionnez Propriétés :

La page de configuration des connexions réseau dans Windows
La page de configuration des connexions réseau dans Windows

De là, double-cliquez sur la version 4 du protocole Internet :

Les paramètres des propriétés Wi-Fi dans Windows
Les paramètres des propriétés Wi-Fi dans Windows

Sélectionnez l’option « Utiliser les adresses de serveur DNS suivantes », puis saisissez la valeur « 8.8.8.8 » sous Préférence et « 8.8.4.4 » sous Alternatif :

Les champs pour entrer les adresses de serveurs DNS préférés et alternatifs dans Windows
Les champs pour entrer les adresses de serveurs DNS préférés et alternatifs dans Windows

Lorsque vous avez terminé, cliquez sur Ok. Redémarrez ensuite votre système et essayez d’accéder à nouveau au site web.

Pour modifier les paramètres de votre serveur DNS en utilisant macOS, vous devez aller dans Apple > Préférences système > Réseau :

Préférences de système dans macOS
Préférences de système dans macOS

Dans la fenêtre qui s’ouvre, sélectionnez votre connexion, puis cliquez sur Avancé suivi de l’onglet DNS :

Le panneau DNS du réseau dans macOS
Le panneau DNS du réseau dans macOS

Cliquez sur l’icône + à côté des adresses IPv4 ou IPv6, pour remplacer les adresses existantes par les IPs publiques de Google.

Pour de plus amples instructions ou pour des conseils sur l’utilisation du Google Public DNS sur un Linux ou un autre OS, consultez le guide DNS de Google.

6. Vérifier que les fichiers de configuration de votre serveur ne contiennent pas d’instructions de redirection incorrectes

Le code d’état HTTP 304 Not Modified peut être dû à des problèmes liés au serveur et au client. Si aucune des méthodes que nous avons couvertes jusqu’à présent n’a permis de corriger le problème, il se peut que les fichiers de configuration de votre serveur soient en cause. Par exemple, il est possible que des instructions de redirection incorrectes soient présentes.

Le processus de vérification des fichiers de configuration de votre serveur dépend de l’utilisation que vous faites de Nginx ou d’Apache.

Chez Kinsta, nous utilisons le serveur web Nginx. Donc si vous êtes un utilisateur de Kinsta, vous n’aurez pas accès au fichier .htaccess comme les utilisateurs d’Apache.

Cependant, vous pouvez toujours exercer des fonctions similaires. Par exemple, après vous être connecté à MyKinsta, vous pouvez consulter la section « Analytics > Réponse » du tableau de bord pour obtenir une répartition des codes de réponse et des redirections :

Un exemple de décomposition du code de réponse dans MyKinsta.
Un exemple de décomposition du code de réponse dans MyKinsta.

Vous pouvez également vérifier les logs d’erreurs. Si vous avez une question ou une demande spécifique concernant l’édition des fichiers de configuration, le mieux est de contacter notre équipe d’assistance.

Si votre serveur tourne sous Apache, vous devrez alors rechercher le fichier .htaccess dans le répertoire racine de votre site. Vous pouvez le faire en vous connectant au gestionnaire de fichiers de votre compte d’hébergement, et en naviguant dans le dossier public_html.

Une fois que vous avez ouvert ce fichier, recherchez une section de module mod_cache. Elle devrait ressembler à quelque chose comme ceci :

LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
    LoadModule cache_disk_module modules/mod_cache_disk.so
    <IfModule mod_cache_disk.c>
        CacheRoot "c:/cacheroot"
        CacheEnable disk  "/"
        CacheDirLevels 5
        CacheDirLength 3
    </IfModule>

    # When acting as a proxy, don't cache the list of security updates
    CacheDisable "http://security.update.server/update-list/"
</IfModule>

Nous ne recommandons pas de supprimer quoi que ce soit, car cela peut causer de graves dommages. À la place, vous pouvez essayer de commenter temporairement la section de cache en ajoutant un symbole « # » au début de chaque ligne.

Après avoir enregistré vos modifications, vérifiez si le code d’état HTTP 304 a été résolu.

Résumé

Les codes de redirection 300 sont utilisés pour améliorer la vitesse et les performances des pages. Malheureusement, lorsqu’un serveur ou un navigateur n’est pas correctement configuré, la communication entre les deux peut être interrompue et donner lieu à un code d’état HTTP 304 non modifié. Il existe six méthodes précises que vous pouvez utiliser pour corriger cela :

  1. Effacer les données du cache de votre navigateur.
  2. Exécuter une analyse des logiciels malveillants.
  3. Désactiver les extensions de votre navigateur.
  4. Vider les DNS et réinitialiser le TCI/IP.
  5. Essayer d’utiliser les DNS publics de Google.
  6. Vérifier les fichiers de configuration de votre serveur pour détecter les instructions de redirection incorrectes.