सामग्री

    सर्वर प्रतिक्रिया 406 Not Acceptable

    HTTP स्टेटस कोड 406 (Not Acceptable)

    HTTP स्टेटस कोड 406 का अर्थ है कि सर्वर उस फॉर्मेट में उत्तर देने में असमर्थ है जिसे क्लाइंट ने 'Accept' हेडर में निर्दिष्ट किया है। यह समस्या कई कारणों से उत्पन्न हो सकती है, जैसे कि गलत अनुरोध हेडर या सर्वर पर अनुरोधित फॉर्मेट का समर्थन नहीं होना।

    406 - Not Acceptable

    स्टेटस कोड 406 की परिभाषा और कारण

    जब क्लाइंट एक HTTP अनुरोध भेजता है, तो वह 'Accept' हेडर में उन फॉर्मेट्स की सूची देता है जिन्हें वह स्वीकार करने के लिए सक्षम है। यदि सर्वर उन फॉर्मेट्स में से किसी एक को प्रदान नहीं कर सकता, तो वह स्टेटस कोड 406 भेजता है।

    • गलत हेडर सेटिंग्स
    • सर्वर का विशिष्ट फॉर्मेट को न समझना
    • अनुरोधित रिसोर्स का गैर-मौजूद होना

    क्लाइंट द्वारा अनुभव की जाने वाली स्थितियाँ

    क्लाइंट स्टेटस कोड 406 का सामना तब कर सकता है जब:

    • वह किसी विशेष फॉर्मेट में डेटा की उम्मीद कर रहा हो जो सर्वर पर उपलब्ध नहीं है।
    • वह एक ऐसे फॉर्मेट का अनुरोध कर रहा हो जो सर्वर द्वारा समर्थित न हो।
    • अनुरोध में हेडर गलत तरीके से सेट किया गया हो।

    स्टेटस 406 और अन्य स्टेटस कोड के बीच अंतर

    स्टेटस कोड 406 और अन्य HTTP स्टेटस कोडों, जैसे कि 415 (Unsupported Media Type) के बीच महत्वपूर्ण अंतर है। 415 तब आता है जब सर्वर को पता होता है कि क्लाइंट ने जो फॉर्मेट भेजा है, वह स्वीकार्य नहीं है। जबकि 406 तब आता है जब सर्वर उस फॉर्मेट को नहीं दे सकता जो क्लाइंट ने मांगा है।

    व्यावहारिक उदाहरण

    1. उदाहरण 1: जब एक क्लाइंट एक छवि के लिए अनुरोध करता है, जो सर्वर द्वारा समर्थित नहीं है, तब उसे 406 स्टेटस मिलता है।
    2. उदाहरण 2: एक टेक्स्ट दस्तावेज के लिए अनुरोध किया गया है, लेकिन क्लाइंट ने गलत फॉर्मेट निर्दिष्ट किया है।
    3. उदाहरण 3: जब 'Accept' हेडर गलत तरीके से सेट किया गया है, तो सर्वर 406 स्टेटस कोड भेजता है।

    भाषाओं में त्रुटियों का समाधान

    JavaScript (Node.js)

    const express = require('express');
    const app = express();
    
    app.get('/data', (req, res) => {
        res.status(406).send('Not Acceptable');
    });
    
    app.listen(3000);
    

    इस उदाहरण में, यदि क्लाइंट ने 'Accept' हेडर में एक असमर्थित फॉर्मेट निर्दिष्ट किया है, तो 406 त्रुटि उत्पन्न होती है। इसे ठीक करने के लिए 'Accept' हेडर को जांचें और सही फॉर्मेट सेट करें।

    Python (Flask)

    from flask import Flask, request, jsonify
    
    app = Flask(__name__)
    
    @app.route('/api/data')
    def get_data():
        if 'application/json' not in request.headers.get('Accept', ''):
            return jsonify({'error': 'Not Acceptable'}), 406
        return jsonify({'data': 'Hello World'})
    
    app.run()
    

    इस उदाहरण में, यदि क्लाइंट ने 'Accept' हेडर में 'application/json' शामिल नहीं किया है, तो 406 त्रुटि उत्पन्न होती है। इसे ठीक करने के लिए सही फॉर्मेट को जोड़ें।

    PHP

    <?php
    if (!isset($_SERVER['HTTP_ACCEPT']) || strpos($_SERVER['HTTP_ACCEPT'], 'application/json') === false) {
        http_response_code(406);
        echo json_encode(['error' => 'Not Acceptable']);
        exit;
    }
    echo json_encode(['data' => 'Hello World']);
    ?>
    

    PHP में, यदि 'Accept' हेडर में सही फॉर्मेट नहीं है, तो 406 त्रुटि उत्पन्न होती है। इसे ठीक करने के लिए हेडर को संशोधित करें या रूट को सही फॉर्मेट के लिए सेट करें।

    406 स्टेटस कोड के रोकथाम के उपाय

    • अनुरोध भेजने से पहले 'Accept' हेडर की जांच करें।
    • सर्वर को विभिन्न फॉर्मेट्स के उत्तर देने के लिए कॉन्फ़िगर करें।
    • विभिन्न अनुरोध पैरामीटर के साथ API का परीक्षण करें।

    स्टेटस कोड 406 का व्यावहारिक उपयोग

    यह स्टेटस कोड डेवलपर्स के लिए महत्वपूर्ण है क्योंकि यह उन्हें क्लाइंट की अपेक्षाओं के बारे में जानकारी देता है। उपयोगकर्ता API की त्रुटियों को ठीक करने के लिए सही फॉर्मेट के बारे में जान सकते हैं।

    सही 'Accept' हेडर का महत्व

    क्लाइंट और सर्वर के बीच सही तरीके से संवाद स्थापित करने के लिए 'Accept' हेडर को सही तरीके से प्रबंधित करना आवश्यक है। यह त्रुटियों को कम करने और बेहतर उपयोगकर्ता अनुभव सुनिश्चित करने में मदद करता है।

    अतिरिक्त कोड

    कोडविवरण
    406.0स्वीकार्य नहीं है - अनुरोधित MIME प्रकार स्वीकार्य नहीं है।