400 गलत अनुरोध - डुप्लीकेट हेडर

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

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

क्लाइंट ऐप्लिकेशन को गड़बड़ी कोड के साथ 400 Bad Request का एक एचटीटीपी स्टेटस कोड मिलता है protocol.http.DuplicateHeader का इस्तेमाल, एपीआई कॉल के रिस्पॉन्स के तौर पर किया जाता है.

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

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

HTTP/1.1 400 Bad Request

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

{
   "fault":{
      "faultstring":"Duplicate Header \"Expires\"",
      "detail":{
         "errorcode":"protocol.http.DuplicateHeader"
      }
   }
}

संभावित कारण

यह गड़बड़ी तब होती है, जब कोई ऐसा एचटीटीपी हेडर हो जिसे Apigee में डुप्लीकेट बनाने की अनुमति नहीं है Edge, इनके भेजे गए एचटीटीपी अनुरोध के हिस्से के तौर पर एक ही या अलग-अलग वैल्यू के साथ एक से ज़्यादा बार दिखता है क्लाइंट को Apigee Edge पर भेजना है.

के अनुसार आरएफ़सी 7230, सेक्शन 3.2.2: फ़ील्ड ऑर्डर, ईमेल भेजने वाले को एक से ज़्यादा हेडर जनरेट नहीं करना चाहिए किसी मैसेज में उसी फ़ील्ड नाम के साथ फ़ील्ड शामिल करें, जब तक कि उसके लिए पूरा फ़ील्ड मान न हो हेडर फ़ील्ड को कॉमा लगाकर अलग की गई सूची के तौर पर दिखाया जाता है, [यानी, #(values)] या हेडर फ़ील्ड लोकप्रिय अपवाद. अगर Apigee Edge को कोई खास हेडर मिलता है, तो डुप्लीकेट हैं, तो क्लाइंट के एचटीटीपी अनुरोध में एक से ज़्यादा बार शामिल है, तो 400 Bad Request और गड़बड़ी कोड के साथ जवाब देता है protocol.http.DuplicateHeader.

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

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

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

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

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

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

  1. Apigee Edge के यूज़र इंटरफ़ेस (यूआई) में ऐसे उपयोगकर्ता के तौर पर साइन इन करें जिसके साथ की भूमिका होनी चाहिए.
  2. उस संगठन पर जाएं जिसमें आपको समस्या की जांच करनी है.

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

  8. गड़बड़ी कोड protocol.http.DuplicateHeader के बारे में जानकारी यह है नीचे दिखाए गए तरीके से दिखाया गया है:

    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  9. लॉग देखें पर क्लिक करें और फ़ेल हो चुके अनुरोध की पंक्ति को बड़ा करें.
  10. लॉग विंडो में जाकर, यह जानकारी देखें:
    1. स्टेटस कोड: 400
    2. गलत सोर्स: apigee
    3. गलत कोड: protocol.http.DuplicateHeader.
  11. अगर गलत सोर्स की वैल्यू apigee या MP है और गलत कोड की वैल्यू protocol.http.DuplicateHeader है, तो इससे पता चलता है कि एचटीटीपी अनुरोध क्लाइंट में डुप्लीकेट हेडर हैं.

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

NGINX

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

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

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

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

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

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

    NGINX ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में X-Apigee- के लिए ये वैल्यू हैं गड़बड़ी का कोड और X-Apigee-fault-source:

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

वजह: अनुरोध में डुप्लीकेट हेडर मिला है

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

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

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

    गड़बड़ी के मैसेज का इस्तेमाल करना

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

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

      "faultstring":"Duplicate Header \"Expires\""
      
    2. ऊपर दिए गए गड़बड़ी के मैसेज में, आप देख सकते हैं कि हेडर Expires को एक से ज़्यादा बार भेजा गया है, जैसा कि faultstring में देखा गया है.

    असल अनुरोध

    असल अनुरोध का इस्तेमाल करना

    1. अगर आपके पास क्लाइंट ऐप्लिकेशन के असल अनुरोध का ऐक्सेस है, तो यह तरीका अपनाएं:

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

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

      curl https://HOST_ALIAS/duplicateheadertest -v -H "Expires: Mon, 21 June 2021 07:28:00 GMT" -H "Expires: Mon, 21 June 2021 07:28:00 GMT"
      

      ऊपर दिए गए उदाहरण अनुरोध में, हेडर Expires को इससे ज़्यादा एक बार. इसलिए, यह अनुरोध 400 Bad Request गड़बड़ी की वजह से पूरा नहीं हो पाता है और गड़बड़ी कोड: protocol.http.DuplicateHeader.

    2. इसके अलावा, अगर आपके पास क्लाइंट लॉग का ऐक्सेस है, तो देखें कि Apigee Edge को किए गए असल अनुरोध के बारे में जानकारी देता है और हेडर तय करता है कि एक से ज़्यादा बार भेजा गया हो.

रिज़ॉल्यूशन

डुप्लीकेशन ठीक करें

पहला विकल्प [सुझाया गया विकल्प] क्लाइंट ऐप्लिकेशन को ठीक करें, ताकि डुप्लीकेट हेडर शामिल न किए जा सकें

  1. किसी क्लाइंट के डुप्लीकेट हेडर भेजने की वजह का विश्लेषण करें. उदाहरण के लिए, ऊपर दिए गए मामले में Expires. पुष्टि करें कि एपीआई प्रॉक्सी के लिए इसे स्वीकार करना सही है हेडर को कॉपी करना. आम तौर पर, एचटीटीपी स्पेसिफ़िकेशन के मुताबिक ऐसा करने की अनुमति नहीं है RFC7230.
  2. अगर यह ज़रूरी नहीं है, तो अपने क्लाइंट ऐप्लिकेशन में बदलाव करें, ताकि डुप्लीकेट हेडर न भेजे जाएं.

    ऊपर बताए गए उदाहरण में, यह पता चला है कि हेडर Expires भेजा गया है समान मान के साथ दो बार ऐसा करें, जो अवांछनीय नहीं है. समस्या को हल करने के लिए, Expires हेडर सिर्फ़ एक बार नीचे दिखाया गया है:

    curl https://HOST_ALIAS/duplicateheadertest -v -H "Expires: Mon, 21 June 2021 07:28:00 GMT"
    
  3. अगर आपको डुप्लीकेट हेडर की अनुमति देनी है, तो यहां जाएं CwC प्रॉपर्टी का इस्तेमाल करने का दूसरा विकल्प.

CwC

दूसरा विकल्प CwC प्रॉपर्टी का इस्तेमाल करना

Apigee, डेवलपर को CwC प्रॉपर्टी HTTPHeader.<HeaderName> ,जिससे क्लाइंट का इस्तेमाल करें.

CwC प्रॉपर्टी वैल्यू
HTTPHeader.<HeaderName> allowDuplicates,multivalued

उदाहरण के लिए, डुप्लीकेट मैसेज और ईमेल को अनुमति देने के लिए, मैसेज प्रोसेसर पर इस प्रॉपर्टी को सेट किया जा सकता है हेडर Expires के लिए एक से ज़्यादा वैल्यू.

HTTPHeader.Expires=allowDuplicates, multiValued
  1. अगर आप निजी Cloud उपयोगकर्ता हैं, तो आपके पास प्रॉपर्टी को कॉन्फ़िगर करने का विकल्प होता है, ताकि Apigee Edge, 400 Bad Request गड़बड़ी पैदा करने की अनुमति नहीं देता, भले ही अनुरोध किया गया हो इसमें का इस्तेमाल करने वाले डुप्लीकेट हेडर हैं डुप्लीकेट हेडर इस्तेमाल करने के लिए, मैसेज प्रोसेसर को कॉन्फ़िगर करने का तरीका.
  2. अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो इस प्रॉपर्टी को कॉन्फ़िगर करने के लिए, Apigee Edge की सहायता टीम से संपर्क करें एक ही उपयोगकर्ता नाम देना ज़रूरी है.

खास जानकारी

Apigee को उम्मीद है कि क्लाइंट ऐप्लिकेशन, अनुरोध के हिस्से के तौर पर डुप्लीकेट हेडर नहीं भेजे आरएफ़सी के नीचे दिए गए निर्देशों के मुताबिक:

खास जानकारी
आरएफ़सी 7230, सेक्शन 3.2.2: फ़ील्ड ऑर्डर
आरएफ़सी 7230, सेक्शन 3.2 हेडर फ़ील्ड

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

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

गड़बड़ी की जानकारी इकट्ठा करें. इसके बाद, Apigee Edge की सहायता टीम से संपर्क करें.

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

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

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

  • पूरे न हो पाने वाले अनुरोधों की वजह से, गड़बड़ी का पूरा मैसेज मिला
  • परिवेश का नाम
  • एपीआई प्रॉक्सी बंडल
  • curl निर्देश पूरा करें, जिसका इस्तेमाल आपने 400 गड़बड़ी को ठीक करने के लिए किया था
  • एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें
  • 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 अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है