Avatar ·

Por que o Google adiciona while(1); no início de suas respostas JSON?

Olá a todos! Sou um desenvolvedor frontend iniciante e recentemente me deparei com uma característica interessante ao trabalhar com a API do Google. Quando faço uma requisição para alguns de seus endpoints, como o Google Calendar API ou o Google Suggest, vejo uma construção estranha na resposta: `while(1);` antes do próprio JSON. Aqui está um exemplo de como a resposta se parece: ``` while(1); {"items": [{"id": 1, "name": "test"}]} ``` No começo, pensei que fosse algum erro ou bug. Tentei parsear essa resposta com `JSON.parse()` — naturalmente, obtive um erro, porque `while(1);` não é um JSON válido. Tive que escrever um workaround para cortar esse prefixo: ```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); }); ``` Mas isso parece uma solução muito estranha e nada óbvia. Por que o Google adiciona esse `while(1);`? Afinal, e...