Warum fügt Google while(1); am Anfang seiner JSON-Antworten hinzu?
Hallo zusammen! Ich bin ein angehender Frontend-Entwickler und bin kürzlich auf eine interessante Besonderheit bei der Arbeit mit der Google API gestoßen. Wenn ich eine Anfrage an einige ihrer Endpunkte stelle, zum Beispiel an die Google Calendar API oder Google Suggest, sehe ich in der Antwort eine seltsame Konstruktion: `while(1);` vor dem eigentlichen JSON.
Hier ist ein Beispiel, wie die Antwort aussieht:
```
while(1);
{"items": [{"id": 1, "name": "test"}]}
```
Ich dachte zuerst, das sei ein Fehler oder Bug. Ich habe versucht, diese Antwort mit `JSON.parse()` zu parsen – natürlich bekam ich einen Fehler, weil `while(1);` kein gültiges JSON ist.
Ich musste einen Workaround schreiben, um diesen Prefix zu entfernen:
```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);
});
```
Aber das erscheint mir sehr seltsam und nicht offensichtlich. Warum fügt Google überhaupt dieses `while(1);` hinzu? Denn schließlich...