Accueil
/
Aide du site web
/
Code d'état 303 : 3 Façons Simples de le Corriger

Code d'état 303 : 3 Façons Simples de le Corriger

Vous dépannez un code d’état 303 sur votre site web ? Cette redirection temporaire est déclenchée après la soumission des formulaires pour garantir que les données ne sont pas soumises à nouveau si un utilisateur actualise la page. Cependant, une implémentation incorrecte de ce code d’état de réponse HTTP peut entraîner des problèmes tels que la duplication des données de formulaire, des erreurs de navigation web ou un chargement de page plus lent.

Dans ce guide, nous explorerons le code d’état 303, son utilisation appropriée et les problèmes potentiels. Nous vous montrerons également 3 façons de le corriger et de l’optimiser pour une expérience web plus fluide.

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

Les serveurs web utilisent le code d’état 303 pour rediriger le navigateur d’un client vers une URL différente de celle de la requête d’origine. Cette redirection se produit une fois que le serveur web a traité avec succès une action.

Il s’agit généralement d’une requête POST soumise par l’utilisateur à la ressource cible d’origine. Le code d’état 303 est défini dans la RFC 7231 Section 6.4.4 comme ” Voir Autre.”

Comme les autres codes d’état HTTP 3XX, 303 est considéré comme une redirection temporaire mais nécessite une méthode GET pour récupérer la ressource demandée.

Cependant, l’utilisation d’un code d’état HTTP 303 peut devenir problématique dans certains scénarios. Si cela n’est pas fait correctement, cela peut entraîner des problèmes de mise en cache, une utilisation accrue de la bande passante et des temps de chargement plus lents. Cela peut compromettre l’expérience et la satisfaction globales de l’utilisateur.

De plus, les systèmes obsolètes peuvent ne pas traiter correctement les réponses 303, ce qui entraîne des problèmes de compatibilité. Mauvaise configuration, comme utiliser 303 au lieu de 301 permanent et 302 redirections temporaires, peuvent également entraîner une navigation incorrecte et des erreurs de traitement des demandes.

Quand etamp Comment le code d’état 303 est-il utilisé ?

Le code d’état 303 est utilisé lorsqu’un navigateur envoie des données à un serveur via une requête HTTP POST. Après avoir traité avec succès la demande, le serveur répond avec une redirection 303 demandant au navigateur de charger une URL différente à l’aide de la méthode GET. Cette redirection empêche le navigateur de recharger la page d’origine et de soumettre à nouveau les données par inadvertance.

Vous ne devez pas confondre les redirections 303 avec les redirections 301 et 302, car elles servent à des fins différentes. Voici en quoi ils diffèrent :

  • 301 Déplacé de façon permanente : cette redirection est utilisée lorsqu’une ressource a été déplacée de façon permanente. Il demande aux clients et aux moteurs de recherche de mettre à jour leurs enregistrements, en remplaçant l’ancienne URL par la nouvelle dans les signets et les index de recherche.
  • 302 trouvés est utilisé pour les redirections temporaires. Une redirection 302 ne précise pas comment les clients doivent redemander la ressource, conservant généralement la méthode de requête d’origine (POST, GET, etc.).

Contrairement à 302, une redirection 303 requiert spécifiquement l’utilisation de la méthode GET, ce qui est idéal pour des scénarios tels que les soumissions de formulaires afin d’éviter les actions POST en double lors de l’actualisation.

Exemple technique d’utilisation de 303

Pour examiner un exemple plus technique d’utilisation du statut HTTP 303, nous prendrons le cas d’une page d’abonnement à une newsletter.

Disons que vous souhaitez vous abonner à la newsletter d’un site web. Ci-dessous, nous décrivons comment votre action est traitée et le résultat que vous voyez dans ce scénario précis.

Une infographie illustrant l'utilisation et le modèle du code d'état 303

Voici une description plus détaillée du graphique présenté ci-dessus :

  1. Lorsque vous cliquez sur “Envoyer” sur le formulaire, votre navigateur envoie une requête HTTP POST au logiciel du serveur web. Cette demande contient généralement les données que vous avez saisies dans les champs du formulaire. Voici un exemple de code personnalisé d’un formulaire d’inscription et des données qu’il collecte :
<form method="POST" action="/subscribe-newsletter">

<input type="email" name="email" required placeholder="Enter your email">

<button type="submit">Subscribe</button>

</form>
  1. Ensuite, le serveur traite les données envoyées avec la requête POST. Il ajoute votre e-mail à la liste des newsletters.
  2. Ensuite, le serveur répond avec un code d’état HTTP 303 et un en-tête d’emplacement pointant vers l’URL de la page de confirmation.

Voici un exemple de base des codes de réponse du serveur envoyés au navigateur.

HTTP/1.1 303 See Other

Location: https://www.example.com/thank-you.html
  1. Dès réception du code de réponse d’état 303, le navigateur vérifie immédiatement le champ d’en-tête Emplacement pour déterminer où vous rediriger.
  2. Quelle que soit la méthode d’origine utilisée (dans ce cas, POST), le navigateur utilise une méthode GET pour récupérer l’URL de la ressource spécifiée dans le champ d’en-tête Location. Cela empêche les données POST d’origine d’être soumises à nouveau si l’utilisateur actualise la nouvelle page web.
  3. Ensuite, le navigateur accède à l’URL spécifiée avec la valeur du champ Emplacement à l’aide d’une requête GET. Il met également en cache la page web demandée à utiliser pour les requêtes futures
  4. Dans la dernière étape logique, le navigateur vous propose une page de “Confirmation”.

Qu’est-ce qui déclenche un code d’état HTTP 303 ?

Le code de réponse 303 est le résultat d’une demande d’un client. C’est souvent interprété à tort comme une erreur, mais cela indique simplement que le serveur vous redirige vers un emplacement différent. Cette réponse indique que la ressource demandée peut être trouvée à un nouvel emplacement et récupérée avec une requête GET, quelle que soit la méthode de requête d’origine.

Le code d’état 303 peut être déclenché par des instructions de redirection involontaires lorsqu’il est utilisé par erreur à la place des redirections 301 ou 302. Bien que l’emplacement principal de la requête puisse toujours être la ressource cible d’origine, la redirection 303 déplace temporairement l’interaction vers une nouvelle URL d’emplacement.

La clé ici est que la redirection 303 est destinée au client pour récupérer le résultat (ou une ressource associée), PAS pour indiquer que le la ressource d’origine a définitivement déplacé ou modifié son URL principale.

Une autre cause de l’état 303 peut être un code personnalisé d’une application ou une mauvaise configuration du serveur qui gère incorrectement les méthodes HTTP, entraînant une mauvaise exécution des actions prévues.

Problèmes potentiels liés au code d’état HTTP 303

Si la redirection 303 échoue, vous pourriez rencontrer des problèmes tels que les suivants :

  • Le navigateur peut afficher une Erreur 404 Not Found ou tomber dans boucles de redirection infinies. Cela peut également renvoyer les utilisateurs vers les mauvaises pages, affectant à la fois l’expérience utilisateur et le flux de l’application web.
  • Ou utilisation accrue de la bande passante par l’excès de données échangées entre les agents utilisateurs (serveur-client).
  • Et une charge de serveur élevée car le serveur doit traiter des demandes client inutiles.
  • En outre, certains problèmes de mise en cache peuvent survenir si l’emplacement cible dans un 303 n’est pas défini avec les en-têtes de mise en cache appropriés. Certains clients et proxys intermédiaires peuvent mettre en cache de manière incorrecte la réponse 303 plutôt que le résultat de la requête GET suivante.
  • De plus, si les moteurs de recherche sont perturbés par les mauvaises pages, cela peut même affecter la Référencement. Notez que les redirections 303 ne transmettent pas l’équité des liens. Ainsi, les utiliser dans des situations mieux adaptées au 301 (redirections permanentes) peut conduire à de mauvais résultats SEO.

Il est donc très important de s’assurer que ces redirections sont correctement configurées pour que tout fonctionne correctement et que vos utilisateurs soient satisfaits.

Comment corriger un code d’état HTTP 303 (3 méthodes)

Si vous rencontrez des problèmes avec une redirection 303 qui ne s’exécute pas correctement ou provoque d’autres problèmes, cette section vous montrera 3 façons de résoudre ce problème.

IMPORTANT : Avant de dépanner un code d’état 303, créez toujours une sauvegarde complète de votre site web ou utilisez un environnement de staging.

Examinez la configuration et les journaux de votre serveur

Vous devez examiner la configuration de votre serveur pour résoudre un code d’état 303 problématique. Résoudre un problème de code d’état 303 implique souvent de comprendre pourquoi votre serveur d’hébergement web (Apache ou Nginx) envoie ces redirections de manière inappropriée ou excessive.

Pour résoudre ce problème, vous pouvez examiner les journaux de votre serveur pour trouver des indices sur ce qui pourrait déclencher ces réponses. Voici comment procéder :

  1. Accédez aux journaux de votre serveur.
    Pour Apache, les journaux se trouvent généralement dans /var/log/apache2/ sur Ubuntu ou /var/log/httpd/ sur CentOS. Pour Nginx, enregistrez /var/log/nginx/. Dans ces répertoires, recherchez journaux d’erreurs (comme error.log) ou journaux d’accès (comme access.log). Gardez à l’esprit que la plupart des fournisseurs d’hébergement gérés restreignent l’accès aux journaux du serveur pour des raisons de sécurité.

REMARQUE : Les clients SiteGround peuvent voir leurs journaux d’erreurs via les outils du site et accéder aux journaux via Gestionnaire de fichiers, SFTP ou connexion SSH.

  1. Analyser les fichiers journaux.
    Ouvrez les fichiers journaux et recherchez les entrées liées aux codes d’état 303. Vous pouvez utiliser des outils comme grep à cet effet. Par exemple :
grep “303” ~/www/yourdomain.com/logs/yourdomain.com-2024-05-*
  1. Identifiez les modèles dans les résultats de vos journaux.Recherchez les modèles ou les points communs dans les requêtes qui génèrent 303 réponses. Les principaux détails à noter incluent :
    • Les URL ou les points de terminaison demandés avec la requête principale.
    • L’heure et la fréquence de ces demandes.
    • Toutes les actions ou erreurs associées répertoriées avant ou après les entrées 303.
  1. Vérifiez la configuration de votre serveur
    En fonction de vos résultats, examinez le fichier .htaccess pour détecter toute mauvaise configuration ou règle susceptible d’être à l’origine de redirections 303 involontaires. Recherchez spécifiquement les règles de réécriture, configurations de redirection ou paramètres de proxy qui pourraient déclencher l’état 303 de manière incorrecte. Par exemple :
RewriteEngine On

RewriteRule ^oldpath$ /newpath [R=303]
  1. Ajustez votre configuration

Si vous identifiez des règles ou des paramètres problématiques, modifiez-les en conséquence. Cela peut impliquer de modifier le code d’état, d’ajuster les conditions dans lesquelles la redirection se produit ou de supprimer complètement la règle si elle n’est pas nécessaire.

  1. Tester le correctif

Enfin, vérifiez que le problème est résolu en re-testant les scénarios qui ont précédemment conduit aux redirections 303. Utilisez des outils comme curl pour simuler des requêtes et observer les réponses :

curl -I http://yourdomain.com/path

Si les journaux du serveur ne vous ont donné aucun indice, continuez à lire pour savoir comment examiner les journaux de vos applications.

Vérifiez vos journaux et applications d’application. Déboguer

Si vous dépannez un statut 303 dans WordPress, commencez par fouiller dans les journaux et les paramètres de votre application :

  1. Consultez vos journaux WordPress pour détecter les messages d’erreur ou les entrées inhabituelles liées au statut 303. Ce guide des journaux WordPress vous aidera à accéder aux journaux détaillés.
  2. Activez le mode débogage de WordPress pour améliorer la transparence de votre site. Recherchez le fichier wp-config.php dans votre dossier racine et modifiez-le pour modifier la ligne suivante de define (‘ WP_DEBUG’, false) pour définir (‘ WP_DEBUG’, true). Ou ajoutez l’extrait suivant :
    Capture d'écran montrant comment modifier le fichier wp-config dans le gestionnaire de fichiers pour activer le mode débogage dans WordPress pour un dépannage du code d'état 303
define('WP_DEBUG', true);

define('WP_DEBUG_LOG', true);

define('WP_DEBUG_DISPLAY', false);
Capture d'écran montrant les règles du mode débogage ajoutées pour dépanner un code d'état 303

Cet extrait de code permet le débogage de WordPress et enregistre les erreurs dans un fichier nommé debug.log dans le répertoire wp-content. De cette façon, les messages d’erreur sont cachés aux visiteurs, ce qui est une bonne pratique pour maintenir la sécurité du site et l’expérience utilisateur.

  1. Désactivez les plugins WordPress pour vérifier s’il y en a Le plugin crée un conflit et provoque des statuts HTTP inattendus. Désactivez-les temporairement pour voir si le problème est résolu, puis réactivez-les un par un pour identifier le coupable.
    Capture d'écran montrant comment désactiver tous les plugins WordPress à la fois à partir de SiteGround Site Tools

La mise en œuvre systématique de ces étapes vous aidera à identifier et à corriger la source du statut 303, garantissant ainsi le fonctionnement optimal de votre site WordPress.

Si tout semble bien avec la configuration de votre application, vous devrez peut-être vérifier vos appels côté client, alors poursuivez votre lecture pour plus d’informations sur ce correctif.

Mettre à jour les appels côté client

Parfois, le problème réside dans les appels HTTP côté client. Assurez-vous que les appels au serveur sont correctement formatés et que la méthode de demande de récupération spécifiée est appropriée pour l’action.

Par exemple, changer un POST en GET dans vos appels AJAX peut résoudre le problème si le serveur est configuré pour répondre différemment en fonction de la méthode de requête.

Examinez la logique qui gère la redirection côté client. Il est crucial que le client interprète correctement le statut 303 et passe de la requête POST d’origine à une requête GET pour la nouvelle URL. Cela implique souvent de peaufiner les scripts côté client pour garantir qu’ils ne ré-essayent pas automatiquement la demande d’origine mais suivent plutôt la nouvelle URL spécifiée dans la réponse 303.

Voici un exemple d’appel AJAX :

fetch(url, {

method: 'POST',

body: data

})

.then(response => {

if (response.status === 303) {

return window.location = response.headers.get('Location');

}

return response.json();

})

.catch(error => console.error('Error:', error));

Cet extrait garantit que si le serveur répond avec un code d’état 303, le client suivra la redirection comme prévu.

Un code de statut 303 a-t-il un impact sur les performances SEO ?

Un code de réponse 303 est principalement utilisé après la soumission du formulaire pour empêcher la nouvelle soumission des données lors de l’actualisation de la page. Contrairement aux redirections 301 ou 302, qui transmettent l’équité des liens vers la nouvelle URL, une 303 est considérée comme temporaire et ne transfère pas. Valeur SEO, laissant intact le classement de l’URL d’origine.

Cependant, une utilisation excessive des redirections 303 peut peser sur le budget d’exploration de votre site et augmenter les temps de chargement des pages, car chaque redirection introduit une étape de chargement supplémentaire. Par conséquent, même si les redirections 303 améliorent l’expérience utilisateur en évitant les soumissions en double, elles doivent être utilisées avec parcimonie pour éviter les impacts négatifs sur votre performances SEO du site.

Bonnes pratiques pour les redirections 303 et le référencement

Utiliser les redirections 303 principalement aux fins prévues. Cela inclut la gestion des soumissions de formulaires et des changements de méthode où le fait de remettre l’utilisateur sur la même URL pourrait entraîner des actions en double ou une utilisation incorrecte de la méthode HTTP.

Vous devez également surveiller et éviter les chaînes de redirection. Les redirections 303 ne doivent pas conduire à de longues chaînes de redirection, car celles-ci peuvent réduire la valeur SEO et augmenter les temps de chargement.

De plus, effectuez des audits et des mises à jour régulières pour examiner la nécessité et la fonctionnalité des redirections existantes, afin d’optimiser les performances du site et l’efficacité de l’exploration.

FAQ sur les codes d’état 303

Que signifie le code d’état 303 ?

Le code d’état 303 indique au navigateur de « chercher ailleurs » après avoir soumis les données. Il redirige le navigateur vers une nouvelle URL pour éviter de soumettre à nouveau les mêmes données si la page d’origine est rechargée.

Quelle est la différence entre un code d’état 302 et 303 ?

Un code d’état 303 demande au client d’utiliser une méthode GET pour récupérer la ressource à un URI différent, quelle que soit la méthode de requête d’origine.

En revanche, un code d’état 302, qui indique également une redirection, ne spécifie pas explicitement que la méthode GET doit être utilisée, ce qui peut conduire à la rétention de la méthode de la requête d’origine (par exemple, POST).

Un code d’état 303 est-il approprié pour tous les types de redirections ?

Non, le code d’état 303 est spécifiquement recommandé pour les situations où le serveur demande au client de séparer la récupération des ressources des autres types d’interaction. Par exemple, comme lors de la soumission d’un formulaire. Utilisez d’autres codes de statut (comme 302 ou 301) à des fins de redirection générale.

Le HTTP 303 est-il mis en cache ?

Les réponses HTTP 303 ne sont pas mises en cache par défaut car elles sont utilisées pour rediriger temporairement les utilisateurs vers une autre URL, notamment après une requête POST. Cependant, une réponse 303 peut être mise en cache si le serveur d’origine le spécifie dans les en-têtes.

Que dois-je vérifier si le code d’état 303 persiste même après des modifications ?

Assurez-vous que tous les caches (navigateur et côté serveur) sont effacés car les redirections mises en cache peuvent parfois entraîner la persistance d’un ancien comportement. De plus, vérifiez qu’aucun proxy intermédiaire ou CDN remplacent la configuration de votre serveur.

Partager cet article