सामग्री

    सर्वर प्रतिक्रिया 206 Partial Content

    HTTP स्थिति कोड 206 (Partial Content) की परिभाषा

    HTTP स्थिति कोड 206 (Partial Content) यह दर्शाता है कि सर्वर ने क्लाइंट के आंशिक अनुरोध को सफलतापूर्वक संसाधित किया है और केवल संसाधन का अनुरोधित भाग वापस कर रहा है। यह कोड तब उपयोगी होता है जब क्लाइंट केवल फ़ाइल का एक भाग मांगता है, जो डेटा स्ट्रीमिंग या बड़े फ़ाइलों के डाउनलोड के लिए सहायक होता है।

    206 - Partial Content

    स्थिति 206 के व्यावहारिक उदाहरण

    • बड़े फ़ाइलों के डाउनलोड में उपयोग:
      • क्लाइंट कैसे फ़ाइल का एक भाग अनुरोध कर सकता है
      • Range हेडर का उपयोग करते हुए अनुरोध के उदाहरण
    • वीडियो और ऑडियो स्ट्रीमिंग में आवेदन:
      • बफरिंग और डेटा ट्रांसफर कैसे काम करता है
      • सर्वर और क्लाइंट पर कार्यान्वयन के उदाहरण
    • CDN (कंटेंट डिलीवरी नेटवर्क) में उपयोग:
      • CDNs 206 का उपयोग कैसे करते हैं

    Range हेडर का उपयोग करते हुए अनुरोध के उदाहरण

    Range हेडर का प्रारूप इस प्रकार है:

    Range: bytes=start-end

    विशिष्ट फ़ाइल के बाइट्स प्राप्त करने के लिए अनुरोध के उदाहरण:

    GET /file.mp4 HTTP/1.1
    Host: example.com
    Range: bytes=0-499
    

    सर्वर का उत्तर स्थिति कोड 206 के साथ और संबंधित हेडरों के साथ होगा:

    HTTP/1.1 206 Partial Content
    Content-Range: bytes 0-499/1234
    

    विभिन्न प्रोग्रामिंग भाषाओं में स्थिति 206 को प्रोसेस करना

    PHP

    फ़ाइल के आंशिक डाउनलोड को लागू करने का उदाहरण:

    <?php
    $filename = 'largefile.zip';
    $filesize = filesize($filename);
    $start = 0;
    $end = $filesize - 1;
    
    if (isset($_SERVER['HTTP_RANGE'])) {
        list($start, $end) = sscanf(substr($_SERVER['HTTP_RANGE'], 6), '%d-%d');
        header('HTTP/1.1 206 Partial Content');
        header("Content-Range: bytes $start-$end/$filesize");
    }
    header("Content-Length: " . ($end - $start + 1));
    readfile($filename);
    ?>
    

    Python

    Flask का उपयोग करते हुए आंशिक अनुरोध को प्रोसेस करना:

    from flask import Flask, request, Response
    
    app = Flask(__name__)
    
    @app.route('/file')
    def serve_file():
        start = request.headers.get('Range', 'bytes=0-').split('=')[1]
        start, end = map(int, start.split('-'))
        with open('largefile.zip', 'rb') as f:
            f.seek(start)
            data = f.read(end - start + 1)
        return Response(data, status=206, headers={
            'Content-Range': f'bytes {start}-{end}/{filesize}',
        })
    

    Node.js

    Express का उपयोग करते हुए अनुरोधों को प्रोसेस करना:

    const express = require('express');
    const fs = require('fs');
    const app = express();
    
    app.get('/file', (req, res) => {
        const range = req.headers.range;
        const filePath = 'largefile.zip';
        const stats = fs.statSync(filePath);
        const fileSize = stats.size;
        
        const start = Number(range.replace(/\D/g, ''));
        const end = fileSize - 1;
    
        res.writeHead(206, {
            'Content-Range': bytes ${start}-${end}/${fileSize},
            'Accept-Ranges': 'bytes',
            'Content-Length': end - start + 1,
            'Content-Type': 'application/zip',
        });
    
        const stream = fs.createReadStream(filePath, { start, end });
        stream.pipe(res);
    });
    

    संभावित त्रुटियाँ और उनका समाधान

    • गलत Range हेडर से संबंधित त्रुटियाँ:
      • अमान्य बाइट रेंज के कारण 416 Requested Range Not Satisfiable त्रुटि उत्पन्न हो सकती है।
    • आंशिक डाउनलोड को लागू करते समय त्रुटियों से बचने के लिए सुझाव:
      • सुनिश्चित करें कि सर्वर पर फ़ाइल उपलब्ध है और हेडर सही हैं।
      • चेक करें कि क्लाइंट ने सही रेंज भेजी है।
    • परीक्षण और डिबगिंग के लिए सुझाव:
      • HTTP अनुरोधों की लॉगिंग करें ताकि आप समस्या का पता लगा सकें।
      • पूरी प्रक्रिया का परीक्षण करने के लिए विभिन्न क्लाइंट उपकरणों का उपयोग करें।
    प्रोग्रामिंग भाषा कूट उदाहरण
    PHP सर्वर पर फ़ाइल के आंशिक डाउनलोड को संभालता है।
    Python Flask फ्रेमवर्क का उपयोग करके आंशिक अनुरोधों को प्रोसेस करता है।
    Node.js Express का उपयोग करते हुए आंशिक डाउनलोड को लागू करता है।