استجابة الخادم 416 Range Not Satisfiable
HTTP حالة 416 (النطاق غير قابل للتلبية)
تعتبر HTTP حالة 416 (النطاق غير قابل للتلبية) استجابة من الخادم تشير إلى أن النطاق المطلوب للبيانات لا يمكن تلبيته. يحدث ذلك عندما يطلب العميل جزءًا من المورد، ولكن النطاق المحدد يتجاوز البيانات المتاحة. في هذه المقالة، سنستعرض أسباب ظهور هذه الحالة، أمثلة عملية، وطرق تصحيح الأخطاء بلغات برمجة مختلفة.
أسباب ظهور حالة 416
-
تحديد نطاق غير صحيح
يمكن أن يخطئ العميل في تحديد النطاق، مثل طلب نطاق يتجاوز حجم الملف. على سبيل المثال، إذا كان حجم الملف 500 بايت، وطلب العميل نطاقًا من 500 إلى 600 بايت، فسيؤدي ذلك إلى ظهور حالة 416.
-
عدم وجود بيانات على الخادم
تحدث هذه الحالة عندما يتم حذف المورد أو تغييره، ويكون النطاق المطلوب أكبر من البيانات المتاحة. على سبيل المثال، إذا تم حذف جزء من الملف أو تغييره، قد يتسبب ذلك في ظهور خطأ 416.
-
رؤوس غير صحيحة
يمكن أن تؤدي إعدادات غير صحيحة لرؤوس
Range
إلى حدوث خطأ. على سبيل المثال، إذا تم استخدام تنسيق غير صحيح في رأس النطاق، فإن الخادم لن يفهم الطلب.
أمثلة عملية
-
مثال مع ملف صوتي
عندما يطلب العميل نطاقًا يتجاوز طول الملف الصوتي. على سبيل المثال، إذا كان الملف الصوتي 10 ثوانٍ، وطلب العميل نطاقًا من 10 إلى 20 ثانية، ستظهر حالة 416.
-
مثال مع صورة
عندما يتم طلب جزء من صورة تم تغييرها، ولا يعرف العميل الأبعاد الجديدة. إذا كان قد تم تعديل الصورة، فإن النطاق المطلوب قد لا يتوافق مع البيانات المتاحة.
-
مثال مع ملف نصي
عندما يتم طلب جزء من ملف نصي، ويتجاوز النطاق المطلوب طول الملف. إذا كان الملف يحتوي على 1000 حرف، وطلب العميل نطاقًا من 1000 إلى 1100، فسيؤدي ذلك إلى ظهور حالة 416.
تصحيح خطأ 416 بلغات برمجة مختلفة
بايثون (باستخدام مكتبة requests)
import requests
url = 'http://example.com/file.mp3'
headers = {'Range': 'bytes=500-1000'}
response = requests.get(url, headers=headers)
if response.status_code == 416:
print('النطاق المطلوب غير قابل للتلبية.')
جافا سكريبت (باستخدام Fetch API)
fetch('http://example.com/image.jpg', {
headers: {
'Range': 'bytes=0-500'
}
})
.then(response => {
if (response.status === 416) {
console.log('النطاق المطلوب غير قابل للتلبية.');
}
})
.catch(error => console.error('حدث خطأ:', error));
PHP (باستخدام cURL)
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://example.com/textfile.txt');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Range: bytes=1000-2000'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == 416) {
echo 'النطاق المطلوب غير قابل للتلبية.';
}
curl_close($curl);
ملخص
تشير حالة 416 إلى مشكلات تتعلق بعدم توفر النطاق المطلوب للبيانات. لتجنب هذه الحالة، من المهم تحديد النطاقات بشكل صحيح ومعالجة الأخطاء المحتملة على جانب العميل. من خلال الفهم الجيد للأسباب والإعدادات الصحيحة، يمكن تقليل حدوث هذه الأخطاء بشكل كبير.
السبب | الوصف |
---|---|
تحديد نطاق غير صحيح | طلب نطاق يتجاوز حجم المورد المتاح. |
عدم وجود بيانات على الخادم | حذف أو تغيير المورد مما يجعل النطاق مطلوبًا أكبر من المتاح. |
رؤوس غير صحيحة | إعدادات خاطئة لرؤوس النطاق. |