Erreur HTTP 400 : Bad Request

Comprendre et résoudre les erreurs de requête malformée.

L'erreur HTTP 400 "Bad Request" est l'une des erreurs client les plus courantes sur le web. Elle indique que le serveur n'a pas pu comprendre ou traiter la requête en raison d'une syntaxe incorrecte, de données mal formées ou de paramètres invalides.

Contrairement aux erreurs 5xx qui signalent un problème serveur, le code 400 pointe vers un problème côté client. Cela peut être une URL mal encodée, un corps de requête JSON invalide, des en-têtes HTTP incorrects ou des cookies corrompus. Identifier la cause exacte requiert une analyse méthodique.

Pour les APIs REST et les applications web modernes, le monitoring des erreurs 400 est essentiel. Un pic soudain de 400 peut indiquer un bug dans votre frontend, une incompatibilité après une mise à jour, ou une attaque tentant de faire planter votre système.

Causes principales des erreurs 400

Les erreurs 400 peuvent provenir de nombreuses sources. Voici les causes les plus fréquentes :

Diagnostic d'une erreur 400

Pour identifier la cause exacte d'une erreur 400, suivez cette méthodologie :

Résolution des erreurs 400

Selon la cause identifiée, voici les solutions à appliquer :

Exemples de validation et diagnostic

Voici des exemples de code pour diagnostiquer et prévenir les erreurs 400 :

// JavaScript - Valider JSON avant envoi
function safeSendJSON(url, data) {
    try {
        const jsonString = JSON.stringify(data);
        JSON.parse(jsonString); // Vérification de validité
        return fetch(url, {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: jsonString
        });
    } catch (e) {
        console.error("JSON invalide:", e.message);
        throw new Error("Données invalides");
    }
}

// PHP - Validation côté serveur
$json = file_get_contents("php://input");
$data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
    http_response_code(400);
    echo json_encode(["error" => "JSON invalide"]);
    exit;
}

Une validation côté client ET serveur est essentielle. Côté client pour une meilleure UX, côté serveur pour la sécurité.

Prévention des erreurs 400

Mieux vaut prévenir que guérir. Voici les bonnes pratiques :

Checklist de résolution 400

  • URL correctement encodée (pas de caractères spéciaux nus)
  • Corps de requête JSON/XML valide et bien formé
  • Cookies non corrompus (tester en navigation privée)
  • En-tête Content-Type correspondant au corps envoyé
  • Taille de requête dans les limites du serveur
  • Logs serveur consultés pour le message d'erreur détaillé

Questions fréquentes sur HTTP 400

L'erreur 400 est-elle une erreur serveur ou client ?

C'est une erreur client (codes 4xx). Le serveur fonctionne correctement mais ne peut pas traiter la requête car elle est mal formée. C'est au client de corriger sa requête.

Comment monitorer les erreurs 400 sur mon API ?

Configurez un monitor MoniTao avec une requête valide attendant HTTP 200. Si votre endpoint retourne 400, vous serez alerté immédiatement. Pour les APIs, créez des monitors avec le bon format de body et d'authentification.

Pourquoi mon formulaire retourne soudainement 400 ?

Les causes probables : cookies corrompus (essayez en navigation privée), mise à jour frontend/backend avec incompatibilité de format, ou validation plus stricte ajoutée côté serveur.

Comment renvoyer une erreur 400 avec un message utile ?

Retournez un JSON structuré : {"error": "description", "field": "nom_du_champ", "details": "message explicatif"}. Cela aide énormément au débogage côté client.

Le code 400 affecte-t-il le SEO ?

Pas directement pour les pages publiques qui doivent retourner 200. Cependant, si vos URLs publiques retournent 400 à cause de paramètres mal gérés, ces pages ne seront pas indexées.

Quelle différence entre 400 Bad Request et 422 Unprocessable Entity ?

400 indique une requête syntaxiquement incorrecte (JSON mal formé). 422 indique une requête bien formée mais sémantiquement invalide (email au mauvais format dans un JSON valide).

Conclusion

L'erreur HTTP 400 Bad Request signale que quelque chose ne va pas dans la requête envoyée au serveur. Une bonne pratique consiste à valider les données côté client avant envoi, et à fournir des messages d'erreur explicites côté serveur pour faciliter le diagnostic.

Avec MoniTao, surveillez vos endpoints critiques et soyez alerté dès qu'une erreur 400 apparaît. Un monitoring proactif permet de détecter les problèmes d'intégration, les incompatibilités après mise à jour, et les tentatives d'exploitation avant qu'ils n'impactent vos utilisateurs.

Prêt à dormir sur vos deux oreilles ?

Commencez gratuitement, sans carte bancaire.