Avatar ·

Pourquoi Google ajoute-t-il while(1); au début de ses réponses JSON ?

Bonjour à tous ! Je suis un développeur frontend débutant, et j'ai récemment rencontré une particularité intéressante en travaillant avec l'API de Google. Lorsque j'effectue une requête vers certains de leurs endpoints, par exemple l'API Google Calendar ou Google Suggest, je vois dans la réponse une construction étrange : `while(1);` avant le JSON lui-même. Voici un exemple de ce à quoi ressemble la réponse : ``` while(1); {"items": [{"id": 1, "name": "test"}]} ``` J'ai d'abord pensé qu'il s'agissait d'une erreur ou d'un bug. J'ai essayé de parser cette réponse avec `JSON.parse()` — naturellement, j'ai obtenu une erreur, car `while(1);` n'est pas un JSON valide. J'ai dû écrire un workaround pour supprimer ce préfixe : ```javascript fetch('https://some-google-api.com/data') .then(response => response.text()) .then(text => { const json = text.replace(/^while\(1\);/, ''); const data = JSON.parse(json); console.log(data); }); ``` Mais cela semble une solution très étrange et peu évidente. Pourquoi Google ajoute-t-il ce `while(1);` ? En effet, c'est