لماذا يضيف Google while(1); في بداية استجابات JSON؟
مرحبًا بالجميع! أنا مطور واجهات أمامية مبتدئ ولاحظت مؤخرًا شيئًا غريبًا عند العمل مع Google API. عندما أرسل طلب AJAX إلى خوادمهم، تأتي الاستجابة بصيغة JSON ولكن قبلها يوجد بناء غريب: `while(1);`. على سبيل المثال، تبدو الاستجابة هكذا:
```javascript
while(1);
{"name": "John", "age": 30}
```
في البداية اعتقدت أن هذا خطأ أو خلل. لكن لاحظت بعد ذلك أن هذا يحدث باستمرار. توقف كود JavaScript الخاص بي عن العمل لأن `JSON.parse()` يعطي خطأ بسبب هذه البادئة.
إليك كيف حاولت الحصول على البيانات:
```javascript
fetch('https://example.com/api/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('خطأ:', error));
```
بطبيعة الحال، هذا لا يعمل لأن الاستجابة ليست JSON نقيًا. بحثت في Google ووجدت أن Google تستخدم هذه التقنية، لكنني لم أفهم لماذا. لماذا إفساد JSON صالح؟ هل هذه حماية من شيء ما؟ وكيف يمكنني معالجة هذه الاستجابات بشكل صحيح؟