Avatar ·

لماذا يضيف Google while(1); في بداية استجابات JSON الخاصة به؟

مرحبًا بالجميع! أنا مطور frontend مبتدئ، وقد واجهت مؤخرًا ميزة مثيرة للاهتمام أثناء العمل مع API الخاص بـ Google. عندما أرسل طلبًا إلى بعض نقاط النهاية الخاصة بهم، مثل Google Calendar API أو Google Suggest، أرى في الاستجابة بناء غريبًا: `while(1);` قبل JSON نفسه. إليك مثال على شكل الاستجابة: ``` while(1); {"items": [{"id": 1, "name": "test"}]} ``` في البداية ظننت أن هذا خطأ أو bug. حاولت تحليل هذه الاستجابة باستخدام `JSON.parse()` — وبطبيعة الحال حصلت على خطأ، لأن `while(1);` ليس JSON صالحًا. اضطررت إلى كتابة حل مؤقت لقص هذه البادئة: ```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); }); ``` لكن هذا يبدو حلاً غريبًا وغير واضح. لماذا يضيف Google هذا `while(1);`؟