Un texte blanc sur fond dégradé vert foncé affiche "406" en gros caractères et "Not Acceptable" en dessous, signalant une erreur HTTP 406 - une demande qui ne peut être satisfaite en raison d'un contenu inacceptable et qui peut nécessiter des mesures pour résoudre le problème.

Erreur HTTP 406 Not Acceptable : causes et solutions avec WordPress, Apache et ModSecurity

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

Thunderstruck Radio de nouveau en ligne !

Disque J’ai le plaisir de vous annoncer que Thunderstruck Radio est de nouveau en ligne après quelques mois d’absence. Pour ceux qui n’ont pas suivi ce blog depuis le début (oui, vous là-bas au fond !), Thunderstruck Radio est la webradio de SkyMinds.Net : elle tourne lorsque je suis derrière mon écran et vous pouvez normalement vous y connecter depuis le menu de droite lorsqu’elle est active. Quelques nouveaux scripts PAL spécifiques ont été écrits ces dernières semaines et je ne désespère pas de mettre en place un système de requests : l’exemple fourni avec SAM est buggué jusqu’à la moëlle et je crois qu’il serait quasiment préférable de tout recoder. Malheureusement, cela prend un temps infini…

J’en profite pour passer un petit appel à contribution : toute radio se doit d’avoir un jingle digne de ce nom et je me suis rendu compte avec effroi que TR n’en possède aucun à ce jour. S’il y a des volontaires qui souhaitent étaler leur talent… n’hésitez plus ! Quelques recommandations : il faut que l’ambiance du jingle colle à l’esprit de la radio (rock, hardrock, blues) et que le nom de la radio (Thunderstruck Radio) ainsi que l’adresse (https://www.skyminds.net/thunderstruck-radio/) soient mentionnées. J’ai hâte d’entendre ce que vous allez me concocter : voix suaves exprimez-vous ! ;-)