Gestion des 404 dans oembed_recuperer_url
Bonjour,
mon site se fait "spammer" de logs du genre Pub:ERREUR: Failed to parse Json data : Syntax error
Après investigation, cette erreur provient de bots qui scannent de vieux articles dans lesquels il y a des liens youtube morts.
Le problème vient de la fonction inc_oembed_recuperer_url
qui gère mal les 404 et est reproductible dans les 2 branches du if (function_exists('curl_init'))
.
La fonction considère que si $data
ou $data['page']
vaut quelque chose, alors la requête contient une réponse valide, ce qui n'est pas systématiquement vrai.
Par exemple cette requête https://www.youtube.com/oembed?url=https://youtu.be/cbAhfThNoco
est un succès (on a bien une réponse) MAIS retourne une 404. Et dans ce cas, le contenu de $data
n'est pas (forcément) un JSON mais peut aussi être une string à l'initiative du serveur interrogé. Pour le cas de youtube, ce sera "Not Found".
Je pense que meilleure solution ici est de rajouter un contrôle sur la réponse HTTP à la requête, et de ne tenter un décodage que si la réponse est 200.
Pol