Server response 416 Range Not Satisfiable
สถานะ HTTP 416 (Range Not Satisfiable)
สถานะ HTTP 416 เป็นการตอบกลับจากเซิร์ฟเวอร์ที่บ่งบอกว่าช่วงของข้อมูลที่ร้องขอไม่สามารถตอบสนองได้ ซึ่งอาจเกิดขึ้นเมื่อไคลเอนต์ขอส่วนหนึ่งของข้อมูล แต่ช่วงที่ระบุเกินขอบเขตของข้อมูลที่มีอยู่ ในบทความนี้เราจะพิจารณาสาเหตุของการเกิดสถานะนี้ ตัวอย่างการใช้งานจริง และวิธีการแก้ไขข้อผิดพลาดในภาษาต่าง ๆ
สาเหตุของการเกิดสถานะ 416
- ระบุช่วงไม่ถูกต้อง
ไคลเอนต์อาจทำผิดพลาดเมื่อระบุช่วงของข้อมูล เช่น การร้องขอช่วงที่เกินขนาดของไฟล์ที่มีอยู่
- ข้อมูลไม่อยู่บนเซิร์ฟเวอร์
สถานการณ์ที่ทรัพยากรถูกลบหรือเปลี่ยนแปลง และช่วงที่ร้องขอมีขนาดใหญ่กว่าข้อมูลที่มีอยู่
- การตั้งค่าหัวข้อไม่ถูกต้อง
การตั้งค่าหัวข้อ
Range
ที่ไม่ถูกต้องอาจทำให้เกิดข้อผิดพลาดนี้ได้
ตัวอย่างการใช้งาน
- ตัวอย่างไฟล์เสียง
ไคลเอนต์ขอช่วงที่เกินความยาวของไฟล์เสียง เช่น การร้องขอช่วงที่อยู่นอกเหนือจากความยาวของไฟล์
- ตัวอย่างรูปภาพ
การร้องขอส่วนหนึ่งของรูปภาพที่ถูกเปลี่ยนแปลง และไคลเอนต์ไม่ทราบขนาดใหม่
- ตัวอย่างไฟล์ข้อความ
การร้องขอไฟล์ข้อความที่ช่วงที่ระบุเกินขอบเขตของไฟล์
การแก้ไขข้อผิดพลาด 416 ในภาษาต่าง ๆ
Python (ใช้ไลบรารี requests)
import requests
url = 'http://example.com/file.mp3'
headers = {'Range': 'bytes=1000-2000'}
response = requests.get(url, headers=headers)
if response.status_code == 416:
print('ช่วงที่ร้องขอไม่สามารถตอบสนองได้')
JavaScript (ใช้ Fetch API)
fetch('http://example.com/image.jpg', {
method: 'GET',
headers: {
'Range': 'bytes=0-999'
}
}).then(response => {
if (response.status === 416) {
console.log('ช่วงที่ร้องขอไม่สามารถตอบสนองได้');
}
});
PHP (ใช้ cURL)
$ch = curl_init('http://example.com/text.txt');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Range: bytes=0-50'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 416) {
echo 'ช่วงที่ร้องขอไม่สามารถตอบสนองได้';
}
curl_close($ch);
ตารางสรุปสถานะ 416
สาเหตุ | คำอธิบาย |
---|---|
ระบุช่วงไม่ถูกต้อง | การร้องขอช่วงที่เกินขนาดของไฟล์ |
ข้อมูลไม่อยู่ | ทรัพยากรถูกลบหรือเปลี่ยนแปลง |
การตั้งค่าหัวข้อไม่ถูกต้อง | การตั้งค่าหัวข้อ Range ที่ไม่ถูกต้อง |
สถานะ 416 บ่งบอกถึงปัญหาที่เกิดจากความไม่สามารถตอบสนองต่อช่วงของข้อมูลที่ร้องขอได้ เพื่อหลีกเลี่ยงสถานะนี้จึงจำเป็นต้องระบุช่วงอย่างถูกต้องและจัดการกับข้อผิดพลาดที่อาจเกิดขึ้นในด้านของไคลเอนต์