415 असमर्थित मीडिया प्रकार - असमर्थित एन्कोडिंग

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

समस्या का ब्यौरा

क्लाइंट ऐप्लिकेशन को 415 Unsupported Media Type का एचटीटीपी स्टेटस कोड मिलता है: एपीआई कॉल के रिस्पॉन्स के तौर पर, गड़बड़ी कोड protocol.http.UnsupportedEncoding का पता चलता है.

गड़बड़ी का मैसेज

क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:

HTTP/1.1 415 Unsupported Media Type

इसके अलावा, आपको गड़बड़ी का ऐसा मैसेज भी दिख सकता है जो नीचे दिए गए मैसेज से मिलता-जुलता है:

{
   "fault":{
      "faultstring":"Unsupported Encoding \"UTF-8\"",
      "detail":{
         "errorcode":"protocol.http.UnsupportedEncoding"
      }
   }
}

संभावित कारण

यह गड़बड़ी तब होती है, जब Content-Encoding हेडर की वैल्यू में से किसी एक में क्लाइंट की ओर से Apigee को भेजा गया एचटीटीपी अनुरोध या बैकएंड सर्वर से भेजा गया एचटीटीपी रिस्पॉन्स Apigee में निर्देशों के मुताबिक, Apigee के साथ कोड में बदलने का तरीका आरएफ़सी 7231, सेक्शन 6.5.13: 415 काम न करने वाला मीडिया टाइप.

इस गड़बड़ी की ये वजहें हो सकती हैं:

वजह ब्यौरा इसके लिए लागू होने वाले, समस्या हल करने के निर्देश
अनुरोध में, कोड में बदलने का तरीका काम नहीं करता अनुरोध हेडर Content-Encoding में एन्कोडिंग शामिल है जो समर्थित नहीं है Apigee Edge की पेशकश. Edge के सार्वजनिक और प्राइवेट क्लाउड उपयोगकर्ता
जवाब में इस्तेमाल किया गया, कोड में बदलने का तरीका काम नहीं करता बैकएंड सर्वर रिस्पॉन्स हेडर Content-Encoding में, कोड में बदलने का तरीका शामिल है Apigee Edge पर यह सुविधा काम नहीं करती है. Edge के सार्वजनिक और प्राइवेट क्लाउड उपयोगकर्ता

गड़बड़ी की जांच करने के सामान्य तरीके

गड़बड़ी का पता लगाने के लिए, इनमें से किसी भी तरीके का इस्तेमाल किया जा सकता है:

एपीआई मॉनिटरिंग

एपीआई मॉनिटरिंग का इस्तेमाल करके, गड़बड़ी का पता लगाने के लिए:

  1. अपने Apigee Edge खाते में साइन इन करें.
  2. उस संगठन पर जाएं जिसमें आपको समस्या की जांच करनी है:

    यूज़र इंटरफ़ेस (यूआई) के संगठन के लिए ड्रॉप-डाउन
  3. विश्लेषण करें > एपीआई मॉनिटरिंग > पेज की जांच करें.
  4. वह समयावधि चुनें जिसमें आपको गड़बड़ियां दिखी थीं.
  5. पक्का करें कि प्रॉक्सी फ़िल्टर सभी पर सेट किया गया हो.
  6. समय के हिसाब से गड़बड़ी कोड दिखाएं.
  7. वह सेल चुनें जिसमें गड़बड़ी का कोड protocol.http.UnsupportedEncoding है, जैसा कि नीचे दिखाया गया है:

    गड़बड़ी का कोड सेल चुना गया
  8. गड़बड़ी के कोड protocol.http.UnsupportedEncoding के बारे में जानकारी नीचे दिखाई गई है:

  9. लॉग देखें पर क्लिक करें और 415 में असफल होने वाले अनुरोधों में से किसी एक को बड़ा करें गड़बड़ी से जुड़ी ज़्यादा जानकारी देखें:

  10. लॉग विंडो में जाकर, यह जानकारी देखें:
    • गलत सोर्स: इससे पता चलता है कि apigee से गड़बड़ी मिली है या target.
    • गलत कोड: यह protocol.http.UnsupportedEncoding से मेल खाना चाहिए.
  11. अगर गलत सोर्स apigee है, तो इससे पता चलता है कि अनुरोध Content-Encoding हेडर में असमर्थित एन्कोडिंग शामिल है.
  12. अगर गड़बड़ी का सोर्स target है, तो इससे पता चलता है कि बैकएंड सर्वर Content-Encoding हेडर में रिस्पॉन्स के समय, कोड में बदलने का तरीका काम नहीं करता.

ट्रेस करने वाला टूल

ट्रेस टूल का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:

  1. सक्षम करें ट्रेस सेशन और इनमें से कोई एक:
    • 415 Unsupported Media Type गड़बड़ी आने तक इंतज़ार करें, या
    • अगर आपको समस्या के बारे में अच्छे से पता है, तो उसे हल करने के लिए एपीआई कॉल करें 415 Unsupported Media Type गड़बड़ी.
  2. पक्का करें कि सभी FlowInfos दिखाएं चालू है:

    विकल्पों वाला पैनल देखें, सभी flowinfos दिखाएं
  3. पूरे न हो पाने वाले अनुरोधों में से किसी एक को चुनें और ट्रेस की जांच करें.
  4. ट्रेस के अलग-अलग फ़ेज़ पर जाएं और देखें कि गड़बड़ी कहां हुई.
  5. आपको गड़बड़ी आम तौर पर टारगेट को भेजे गए अनुरोध के बाद फ़्लो में दिखेगी सर्वर फ़ेज़ की जानकारी नीचे दी गई है:

  6. ट्रेस में गड़बड़ी की वैल्यू नोट करें.

    ऊपर दिया गया सैंपल ट्रेस, गड़बड़ी को Unsupported Encoding "utf-8" के तौर पर दिखाता है. से बैकएंड सर्वर को अनुरोध भेजने के बाद, Apigee ने गड़बड़ी की जानकारी दी है, तो इससे पता चलता है कि कि बैकएंड सर्वर ने वैल्यू के साथ रिस्पॉन्स हेडर Content-Encoding भेजा "utf-8" का, जो Apigee में कोड में बदलने का तरीका.

  7. ट्रेस में AX (Analytics डेटा रिकॉर्ड किया गया) चरण पर जाएं और उस पर क्लिक करें.
  8. चरण की जानकारी में नीचे की ओर स्क्रोल करके, गड़बड़ी / रिस्पॉन्स हेडर सेक्शन पर जाएं तय करें और तय करें X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू, जैसा कि यहां दिखाया गया है:

  9. आपको X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू इस तरह दिखेंगी protocol.http.UnsupportedEncoding और target से पता चलता है कि यह गड़बड़ी इसलिए हुई है क्योंकि "utf-8" की असमर्थित एन्कोडिंग वैल्यू रिस्पॉन्स हेडर Content-Encoding में बैकएंड सर्वर.

    रिस्पॉन्स हेडर मान
    X-Apigee-fault-code protocol.http.UnsupportedEncoding
    X-Apigee-fault-source target

  10. यह देखने के लिए जांचें कि क्या आप प्रॉक्सी चेनिंग; इसका मतलब है कि अगर टारगेट सर्वर/टारगेट एंडपॉइंट किसी अन्य Apigee में प्रॉक्सी.
    1. इसे तय करने के लिए, टारगेट सर्वर को भेजा गया अनुरोध फ़ेज़ पर वापस जाएं. कर्ल दिखाएं पर क्लिक करें.

    2. टारगेट सर्वर को भेजे गए अनुरोध का कर विंडो खुलती है. यहां से टारगेट सर्वर होस्ट का उपनाम तय करें.
    3. अगर टारगेट सर्वर होस्ट का उपनाम किसी वर्चुअल होस्ट के उपनाम से जुड़ा है, तो वह प्रॉक्सी है चेन बनाना. ऐसी स्थिति में, आपको एक से ज़्यादा बार इस्तेमाल होने वाले प्रॉक्सी के लिए ऊपर दिए गए सभी चरणों को आप पता लगाते हैं कि 415 Unsupported Media Type गड़बड़ी की असल वजह क्या है.
    4. अगर टारगेट सर्वर होस्ट का उपनाम आपके बैकएंड सर्वर पर ले जाता है, तो इससे पता चलता है कि आपका बैकएंड सर्वर, Apigee को कोड में बदलने के काम नहीं कर रहा है.

Ngenix के ऐक्सेस लॉग

NGINX ऐक्सेस लॉग का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:

  1. अगर आप निजी Cloud उपयोगकर्ता हैं, तो यह पता करने के लिए कि NGINX ऐक्सेस लॉग का इस्तेमाल किया जा सकता है या नहीं एचटीटीपी 415 गड़बड़ियों के बारे में अहम जानकारी.
  2. NGINX ऐक्सेस लॉग देखें:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

  3. किसी खास समय के दौरान, 415 गड़बड़ियां खोजें (अगर समस्या हुई है) पुरानी है) या अगर 415 के साथ अब भी कोई अनुरोध पूरा नहीं हो रहा है.
  4. अगर आपको मेल खाने वाले X-Apigee-fault-code की 415 गड़बड़ी मिलती है protocol.http.UnsupportedEncoding का मान निकालें, फिर मान निर्धारित करें X-Apigee-fault-source. का एक दस्तावेज़ है.

    NGINX ऐक्सेस लॉग में 415 कोड वाली गड़बड़ी का सैंपल:

    NGINX ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में X- के लिए नीचे दिए गए मान हैं Apigee-fault-code और X-Apigee-fault-source:

    रिस्पॉन्स हेडर मान
    X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
    X-Apigee-fault-source MP

    X-Apigee-fault-source कीX-Apigee-fault-source वैल्यूX-Apigee-fault-source

कारण: अनुरोध में असमर्थित एन्कोडिंग

संक्रमण की जांच

  1. एपीआई का इस्तेमाल करके मिली गड़बड़ी के लिए, गलत कोड और गलत सोर्स का पता लगाएं निगरानी करने या NGINX ऐक्सेस लॉग के बारे में जानकारी, जैसा कि में बताया गया है गड़बड़ी की जांच करने के सामान्य तरीके.
  2. यदि गलत कोड है protocol.http.UnsupportedEncoding और गलती सोर्स की वैल्यू apigee या MP है, तो इससे पता चलता है कि क्लाइंट ऐप्लिकेशन से भेजे गए अनुरोध के हेडर में, कोड में बदलने का वह तरीका मौजूद है जो काम नहीं करता Content-Encoding.
  3. आप एचटीटीपी अनुरोध में पास किया गया, कोड में बदलने का ऐसा मान तय कर सकते हैं जो काम नहीं करता नीचे दिए गए तरीकों में से किसी एक का इस्तेमाल करके:

    गड़बड़ी का मैसेज

    गड़बड़ी के मैसेज का इस्तेमाल करके:
    1. अगर आपके पास Apigee Edge से मिले, गड़बड़ी के पूरे मैसेज का ऐक्सेस है, तो देखें faultstring तक. faultstring में ऐसी वैल्यू शामिल होती है जो इस्तेमाल नहीं की जा सकती एंडकोडिंग.

      गड़बड़ी के मैसेज का सैंपल:

      "faultstring":"Unsupported Encoding \"UTF-8\""
    2. ऊपर दिए गए गड़बड़ी के मैसेज में, ध्यान दें कि असमर्थित एन्कोडिंग का मान यह है “UTF-8” जैसा कि faultstring में देखा गया.

      “UTF-8”, Apigee Edge में कोड में बदलने का काम नहीं करता है. इसलिए, यह अनुरोध गड़बड़ी कोड के साथ 415 Unsupported Media Type गड़बड़ी होने की वजह से काम नहीं करता: protocol.http.UnsupportedEncoding.

    असल अनुरोध

    असल अनुरोध का इस्तेमाल करके:
    1. अगर आपके पास क्लाइंट ऐप्लिकेशन के किए गए असल अनुरोध का ऐक्सेस नहीं है, तो यहां जाएं रिज़ॉल्यूशन.
    2. अगर आपके पास क्लाइंट ऐप्लिकेशन के असल अनुरोध का ऐक्सेस है, तो इसके लिए, नीचे दिया गया तरीका अपनाएं:
      1. अनुरोध हेडर Content-Encoding. को दी गई वैल्यू तय करें
      2. अगर अनुरोध हेडर Content-Encoding को दिया गया मान एक नहीं होता है इस्तेमाल की जा सकने वाली एन्कोडिंग की सूची में बताया गया है, तो की वजह.

        अनुरोध का सैंपल:

        curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz

        ऊपर दिया गया सैंपल अनुरोध, Content- Encoding हेडर को "UTF-8" वैल्यू भेजता है. यह वैल्यू, नहीं है Apigee Edge में, कॉन्टेंट को कोड में बदलने का तरीका. इसलिए, इस अनुरोध को पूरा नहीं किया जा सकता, क्योंकि गड़बड़ी के कोड के साथ 415 Unsupported Media Type गड़बड़ी है: protocol.http.UnsupportedEncoding.

रिज़ॉल्यूशन

  1. कोड में बदलने के तरीके की वह सूची देखें जो Apigee के साथ काम करती है कोड में बदलने का तरीका.
  2. पक्का करें कि क्लाइंट ऐप्लिकेशन हमेशा ये जानकारी भेजता हो:
    • Content-Encoding हेडर की वैल्यू के तौर पर, कोड में बदलने का सिर्फ़ काम करता है अनुरोध
    • Apigee Edge के लिए इस्तेमाल किए जा सकने वाले फ़ॉर्मैट में पेलोड का अनुरोध और यह फ़ाइल फ़ॉर्मैट से मेल खाता है Content-Encoding हेडर में बताया गया है
  3. ऊपर दिए गए उदाहरण में, अनुरोध पेलोड में एक gz एक्सटेंशन है, जो बताता है कि यह ज़रूरी है कि कॉन्टेंट gzip ही हो. अनुरोध का हेडर भेजकर, समस्या को ठीक किया जा सकता है Content-Encoding: gzip के तौर पर और gzip फ़ॉर्मैट में अनुरोध पेलोड:

    curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
    

वजह: जवाब में कोड में बदलने का तरीका काम नहीं करता

संक्रमण की जांच

  1. एपीआई का इस्तेमाल करके मिली गड़बड़ी के लिए, गलत कोड और गलत सोर्स का पता लगाएं मॉनिटरिंग, ट्रेस टूल या NGINX ऐक्सेस लॉग के बारे में ज़्यादा जानकारी यहां दी गई है गड़बड़ी की जानकारी पाने के सामान्य तरीके.
  2. अगर गलत सोर्स की वैल्यू target है, तो इससे पता चलता है कि बैकएंड सर्वर से भेजे गए जवाब में, कोड में बदलने का यह तरीका मौजूद नहीं है: Content-Encoding हेडर.
  3. आप यहां से एचटीटीपी रिस्पॉन्स के हिस्से के रूप में, काम न करने वाले कोड में बदलने के इस तरीके का मान तय कर सकते हैं बैकएंड सर्वर पर काम करने के लिए, इनमें से किसी एक तरीके का इस्तेमाल करें:

    गड़बड़ी का मैसेज

    गड़बड़ी के मैसेज का इस्तेमाल करके:
    1. अगर आपके पास Apigee Edge से मिले, गड़बड़ी के पूरे मैसेज का ऐक्सेस है, तो faultstring देखें. faultstring में असमर्थित एन्कोडिंग.

      गड़बड़ी के मैसेज का उदाहरण:

      "faultstring":"Unsupported Encoding \"UTF-8\""
    2. ऊपर दिए गए गड़बड़ी के मैसेज में, ध्यान दें कि असमर्थित एन्कोडिंग का मान यह है “UTF-8” जैसा कि faultstring में देखा गया.

      Apigee Edge में, “UTF-8” को कोड में बदलने का तरीका काम नहीं करता. इसलिए अनुरोध पूरा नहीं हुआ, लेकिन गड़बड़ी के कोड के साथ 415 Unsupported Media Type गड़बड़ी हुई: protocol.http.UnsupportedEncoding.

    ट्रेस करने वाला टूल

    ट्रेस का इस्तेमाल करना:
    1. अगर आपके पास असफल अनुरोध के लिए कोई ट्रेस नहीं है, तो यहां जाएं रिज़ॉल्यूशन.
    2. अगर आपने गड़बड़ी के बारे में कोई ट्रेस कैप्चर कर लिया है, तो पता लगाया जा सकता है कि यह एपीआई काम नहीं करता Content-Encoding रिस्पॉन्स के तौर पर, कोड में बदलने का तरीका बैकएंड सर्वर से पास हुआ हेडर देखें, जैसा कि ट्रेस टूल में बताया गया है.

रिज़ॉल्यूशन

  1. कोड में बदलने के तरीके की वह सूची देखें जो Apigee के साथ काम करती है कोड में बदलने का तरीका
  2. पक्का करें कि बैकएंड सर्वर हमेशा ये जानकारी भेजता हो:
    • मान के रूप में केवल समर्थित एन्कोडिंग अनुरोध में Content-Encoding हेडर
    • Apigee Edge के लिए इस्तेमाल किए जा सकने वाले फ़ॉर्मैट में रिस्पॉन्स पेलोड और फ़ॉर्मैट से मेल खाता है Content-Encoding हेडर में बताया गया है

समर्थित एन्कोडिंग

नीचे दी गई टेबल में, Apigee Edge के साथ काम करने वाले एन्कोडिंग फ़ॉर्मैट की सूची दी गई है:

हेडर एन्कोडिंग ब्यौरा
Content-Encoding gzip Unix gzip फ़ॉर्मैट
deflate इस फ़ॉर्मैट में, डिफ़्लेट कंप्रेशन एल्गोरिदम के साथ zlib स्ट्रक्चर का इस्तेमाल किया जाता है.

खास जानकारी

Apigee, गड़बड़ी के 415 Unsupported Media Type जवाब के साथ इस आधार पर जवाब देता है: ये आरएफ़सी स्पेसिफ़िकेशन के मुताबिक हैं:

खास जानकारी
आरएफ़सी 7231, सेक्शन 6.5.13: 415 काम न करने वाला मीडिया टाइप

इन बातों का ध्यान रखें

निम्न पर ध्यान दें:

  • अगर Apigee से 415 गड़बड़ी मिलती है, क्योंकि इसके साथ काम न करने वाले कोड में भेजा गया है एपीआई अनुरोध के हिस्से के तौर पर Content-Encoding हेडर का इस्तेमाल करें, इसके बाद:
    • इस तरह के अनुरोधों के लिए, ट्रेस को कैप्चर नहीं किया जा सकेगा.
    • आप इसके ज़रिए भेजे गए गड़बड़ी के जवाब के फ़ॉर्मैट या कॉन्टेंट में बदलाव नहीं कर पाएंगे RaiseFault, assignMessage जैसी नीतियों का इस्तेमाल करके Apigee Edge.

    ऐसा इसलिए होता है, क्योंकि यह गड़बड़ी मैसेज प्रोसेसर में किसी शुरुआती चरण में होती है. नीति का पालन किया जा सकता है.

  • अगर कोड में बदलने के काम न करने की वजह से, Apigee से 415 गड़बड़ी मिलती है रिस्पॉन्स हेडर में दिखेगी, तो इसे ठीक करना होगा ताकि इस गड़बड़ी से बचा जा सके. इन कामों के लिए, कृपया अपनी बैकएंड टीम की मदद लें इस समस्या को ठीक करें.

अगर आपको अब भी Apigee Edge की सहायता टीम से मदद चाहिए, तो गड़बड़ी की जानकारी ज़रूर इकट्ठा करें पर जाएं.

ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है

अगर आपको अब भी Apigee की सहायता टीम से कोई मदद चाहिए, तो यह जानकारी इकट्ठा करें और फिर Apigee Edge सहायता से संपर्क करें:

अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो यह जानकारी दें:

  • संगठन का नाम
  • परिवेश का नाम
  • एपीआई प्रॉक्सी का नाम
  • 415 गड़बड़ी को ठीक करने के लिए इस्तेमाल किए गए curl निर्देश को पूरा करें
  • एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें

अगर आप निजी Cloud उपयोगकर्ता हैं, तो यह जानकारी दें:

  • पूरे न हो पाने वाले अनुरोधों की वजह से, गड़बड़ी का पूरा मैसेज मिला
  • परिवेश का नाम
  • एपीआई प्रॉक्सी बंडल
  • एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें
  • NGINX ऐक्सेस लॉग /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    कहां: ORG, ENV और PORT# को इससे बदल दिया गया है सेट करें.

  • मैसेज प्रोसेसर के सिस्टम लॉग /opt/apigee/var/log/edge-message- processor/logs/system.log