Il arrive qu’un site WordPress, un CMS ou une application web refuse soudainement d’enregistrer une page, un article, une option ou un fichier, puis renvoie une erreur HTTP 406.
Le message peut ressembler à ceci :
HTTP Error 406 – Not Acceptable
An appropriate representation of the requested resource /XYZ.php could not be found on this server.
Sur WordPress, cette erreur apparaît parfois dans l’administration, notamment lors de l’enregistrement d’un article, d’un widget, d’un menu, d’un réglage de plugin ou d’une requête AJAX/REST. Dans les anciens cas, elle pouvait aussi se produire avec les éditeurs de fichiers intégrés à WordPress.
Le code HTTP 406 signifie normalement que le serveur ne peut pas produire une réponse compatible avec les en-têtes envoyés par le client, comme Accept, Accept-Encoding ou Accept-Language. MDN le décrit comme une réponse indiquant que le serveur ne peut pas fournir une représentation correspondant aux valeurs acceptables demandées par le client. Voir la documentation MDN sur HTTP 406.
En pratique, sur un site WordPress hébergé chez un prestataire, une erreur 406 vient souvent d’une règle de sécurité trop restrictive, notamment via ModSecurity, le pare-feu applicatif souvent associé à Apache, LiteSpeed ou certains environnements d’hébergement mutualisé.
Comprendre l’erreur HTTP 406 Not Acceptable
Dans la théorie HTTP, une erreur 406 Not Acceptable concerne la négociation de contenu. Le client indique les formats qu’il accepte, puis le serveur tente de fournir une représentation compatible. Si aucune variante ne convient, le serveur peut répondre 406. La documentation Apache explique ce comportement dans le cadre de la négociation de contenu. Voir la documentation Apache sur la négociation de contenu.
Dans la vraie vie d’un site WordPress, l’erreur 406 est souvent moins académique. Elle peut être déclenchée par une règle WAF qui interprète un contenu légitime comme suspect.
Exemples classiques :
- un article contient du code HTML, JavaScript, SQL ou PHP ;
- une option de plugin envoie une requête POST volumineuse ;
- un constructeur de pages sauvegarde du JSON complexe ;
- une requête REST WordPress contient des caractères jugés suspects ;
- un formulaire contient une URL, un iframe, du code embarqué ou une chaîne ressemblant à une injection ;
- une règle ModSecurity bloque un faux positif.
Le serveur ne vous dit pas toujours “j’ai bloqué cette requête pour cause de WAF”. Il renvoie parfois seulement une 406. Très aimable. Très peu bavard.
Lire la suite