Contents

    Server response 416 Range Not Satisfiable

    สถานะ HTTP 416 (Range Not Satisfiable)

    สถานะ HTTP 416 เป็นการตอบกลับจากเซิร์ฟเวอร์ที่บ่งบอกว่าช่วงของข้อมูลที่ร้องขอไม่สามารถตอบสนองได้ ซึ่งอาจเกิดขึ้นเมื่อไคลเอนต์ขอส่วนหนึ่งของข้อมูล แต่ช่วงที่ระบุเกินขอบเขตของข้อมูลที่มีอยู่ ในบทความนี้เราจะพิจารณาสาเหตุของการเกิดสถานะนี้ ตัวอย่างการใช้งานจริง และวิธีการแก้ไขข้อผิดพลาดในภาษาต่าง ๆ

    416 - Range Not Satisfiable

    สาเหตุของการเกิดสถานะ 416

    1. ระบุช่วงไม่ถูกต้อง

      ไคลเอนต์อาจทำผิดพลาดเมื่อระบุช่วงของข้อมูล เช่น การร้องขอช่วงที่เกินขนาดของไฟล์ที่มีอยู่

    2. ข้อมูลไม่อยู่บนเซิร์ฟเวอร์

      สถานการณ์ที่ทรัพยากรถูกลบหรือเปลี่ยนแปลง และช่วงที่ร้องขอมีขนาดใหญ่กว่าข้อมูลที่มีอยู่

    3. การตั้งค่าหัวข้อไม่ถูกต้อง

      การตั้งค่าหัวข้อ 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 บ่งบอกถึงปัญหาที่เกิดจากความไม่สามารถตอบสนองต่อช่วงของข้อมูลที่ร้องขอได้ เพื่อหลีกเลี่ยงสถานะนี้จึงจำเป็นต้องระบุช่วงอย่างถูกต้องและจัดการกับข้อผิดพลาดที่อาจเกิดขึ้นในด้านของไคลเอนต์