431 अनुरोध के हेडर के फ़ील्ड बहुत बड़े हैं - TOBigHeaders

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

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

क्लाइंट ऐप्लिकेशन को एपीआई के रिस्पॉन्स के तौर पर, गड़बड़ी कोड protocol.http.TooBigHeaders के साथ 431 Request Header Fields Too Large का एचटीटीपी स्टेटस कोड मिलता है कॉल.

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

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

HTTP/1.1 431 Request Header Fields Too Large

इसके अलावा, आपको गड़बड़ी का यह मैसेज भी दिख सकता है:

{
   "fault":{
      "faultstring":"request headers size exceeding 25,600",
      "detail":{
         "errorcode":"protocol.http.TooBigHeaders"
      }
   }
}
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

संभावित कारण

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

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

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

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

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

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

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

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

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

    ( बड़ी इमेज देखें)

  7. आपको गड़बड़ी कोड protocol.http.TooBigHeaders के बारे में जानकारी दिखेगी जैसा कि नीचे दिखाया गया है:

    ( बड़ी इमेज देखें)

  8. लॉग देखें पर क्लिक करें और फ़ेल हो चुके अनुरोध की पंक्ति को बड़ा करें:

    ( बड़ी इमेज देखें)

  9. लॉग विंडो में जाकर, यह जानकारी देखें:

    • स्टेटस कोड: 431
    • गलत सोर्स: apigee
    • गलत कोड: protocol.http.TooBigHeaders.
    • अनुरोध की लंबाई(बाइट): 32150 (> 25 KB)
  10. अगर गलत सोर्स की वैल्यू apigee या MP है, तो गलत कोड की वैल्यू protocol.http.TooBigHeaders और है अनुरोध की लंबाई 25 केबी से ज़्यादा है, जो बताता है कि एचटीटीपी अनुरोध के हिस्से के तौर पर, क्लाइंट ऐप्लिकेशन से भेजे जाने वाले सभी अनुरोध हेडर की तुलना में Apigee में इस्तेमाल की जा सकने वाली सीमा.

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

NGINX

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

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

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

    कहां: ORG, ENV, और PORT# को असल वैल्यू से बदल दिया जाता है.

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

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

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

    अनुरोध की लंबाई नोट करें: 40159 (40 केबी, 25 केबी से ज़्यादा होता है, Apigee Edge में अनुरोध हेडर के लिए अनुमति वाली सीमा)

    ऊपर दी गई सैंपल लॉग एंट्री में, X-Apigee-fault-source की वैल्यू apigee या MP, X-Apigee-fault-code की वैल्यू protocol.http.TooBigHeaders और अनुरोध की लंबाई 40 केबी है, जो कि यह Apigee में तय की गई सीमा से ज़्यादा है. इसका साइज़ 25 केबी है. इससे यह साफ़ तौर पर पता चलता है कि एचटीटीपी के हिस्से के तौर पर, क्लाइंट ऐप्लिकेशन से भेजे गए सभी अनुरोध हेडर का कुल साइज़ अनुरोध, Apigee Edge में 25 केबी की तय सीमा को पार कर गया है.

वजह: अनुरोध के हेडर का साइज़, तय सीमा से ज़्यादा है

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

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

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

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

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

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

    "faultstring":"request headers size exceeding 25,600"
    

    असल अनुरोध

    असल अनुरोध का इस्तेमाल करके पुष्टि करने के लिए:

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

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

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

      curl -v https://HOSTALIAS/test -H "header0: 000000000000000000……..000000<trimmed>" -H "header1: 111111111111111111……..111111<trimmed>" -H "header2: 222222222222222222……..222222<trimmed>"-H "header3: 333333333333333333……..333333<trimmed>"
      

      ऊपर दिए गए मामले में, हेडर का कुल साइज़ header0, header1, header2, और header3 का साइज़ 25 केबी से ज़्यादा है, यानी कि इसमें 25 K ASCII वर्ण (बाइट) से ज़्यादा होना चाहिए.

      अगर किसी दूसरे क्लाइंट का इस्तेमाल किया जा रहा है, तो आपके पास क्लाइंट लॉग और Apigee Edge को भेजी जा रही अनुरोध लाइन का साइज़ पता करने की कोशिश करें.

    मैसेज प्रोसेसर के लॉग

    मैसेज प्रोसेसर लॉग का इस्तेमाल करके पुष्टि करने के लिए:

    अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो मैसेज प्रोसेसर के लॉग का इस्तेमाल इन कामों के लिए किया जा सकता है पुष्टि करें कि अनुरोध के हेडर का साइज़, तय सीमा से ज़्यादा है या नहीं Apigee Edge में ऑफ़र की अनुमति है.

    1. मैसेज प्रोसेसर के लॉग देखें:

      /opt/apigee/var/log/edge-message-processor/logs/system.log

    2. यह देखने के लिए खोज करें कि क्या किसी विशेष इवेंट के दौरान कोई 431 गड़बड़ी हुई है अवधि (अगर समस्या पहले हुई है) या कोई अनुरोध है 431 के साथ अब भी काम नहीं कर रहा है. इन खोज स्ट्रिंग का इस्तेमाल किया जा सकता है.
      grep -ri "exceeding"
      
      grep -ri "RequestHeadersTooLarge"
      
    3. आपको system.log से मिलती-जुलती लाइनें मिलेंगी:
      2021-07-27 08:30:28,419  NIOThread@1 ERROR ADAPTORS.HTTP.FLOW -
      AbstractRequestListener.onException() :
      Request:GET, uri:/test/, message Id:null,
      exception:com.apigee.errors.http.user.RequestHeadersTooLarge{
      code = protocol.http.TooBigHeaders, message = request headers size
      exceeding 25,600, associated contexts = []}, context:Context@9c5903
      input=ClientInputChannel(SSLClientChannel[Accepted:
      Remote:192.168.205.251:8443 Local:192.168.67.23:22188]@25130
      useCount=1 bytesRead=0 bytesWritten=15367 age=667062ms  lastIO=0ms
      isOpen=true)
      

      इसमें message = request headers size exceeding 25,600 टेक्स्ट ऊपर दिए गए गड़बड़ी के मैसेज से पता चलता है कि अनुरोध के हेडर का कुल साइज़ 25 केबी. इसलिए, Apigee Edge पर इन गड़बड़ियों का पता चलता है com.apigee.errors.http.user.RequestHeadersTooLarge और सामान लौटाने की सुविधा क्लाइंट ऐप्लिकेशन के लिए, गड़बड़ी कोड protocol.http.TooBigHeaders वाला 431 स्टेटस कोड.

रिज़ॉल्यूशन

साइज़ ठीक करें

विकल्प #1 [सुझाया गया]: उस क्लाइंट ऐप्लिकेशन को ठीक करें जो अनुरोध के हेडर को इसके साथ न भेजे कुल साइज़, तय सीमा से ज़्यादा है

  1. किसी क्लाइंट के अनुरोध का हेडर भेजने की वजह का विश्लेषण करें साइज़, जो हेडर के कुल साइज़ को, तय सीमा से ज़्यादा बनाता है सीमाएं.
  2. अगर यह ज़रूरी नहीं है, तो अपने क्लाइंट ऐप्लिकेशन में बदलाव करें, ताकि यह अनुमति वाली सीमा से कम साइज़ के हेडर का अनुरोध करें.

    ऊपर बताए गए उदाहरण में, लंबा हेडर पास करके समस्या को ठीक किया जा सकता है अनुरोध के मुख्य हिस्से/पेलोड के हिस्से के तौर पर वैल्यू पैरामीटर:

    curl -v https://HOSTALIAS/test -d '{ "header0: 000000000000000000……..000000<trimmed>" , "header1: 111111111111111111……..111111<ttrimmed>" , "header2: 222222222222222222……..222222<ttrimmed>", "header3: 333333333333333333……..333333<ttrimmed>" }'
    
  3. अगर यह ज़रूरी है और हेडर को तय सीमा से ज़्यादा भेजना है, तो अगला विकल्प चुनें.

CwC

दूसरा विकल्प : रिक्वेस्ट लाइन की सीमा बढ़ाने के लिए, CwC प्रॉपर्टी का इस्तेमाल करना

Apigee, डेवलपर को CwC प्रॉपर्टी की मदद से, अनुरोध की लाइन के साइज़ की सीमा को बढ़ाया जा सकता है. ज़्यादा जानकारी के लिए देखें मैसेज प्रोसेसर पर अनुरोध लाइन की सीमा सेट करना

सीमाएं

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

  1. अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो अनुरोध और रिस्पॉन्स हेडर का साइज़, अनुरोध/रिस्पॉन्स हेडर साइज़ के लिए बताया गया है Apigee Edge की सीमाएं.
  2. अगर आप निजी क्लाउड उपयोगकर्ता हैं, तो हो सकता है कि आपने डिफ़ॉल्ट सेटिंग में बदलाव किया हो अनुरोध और रिस्पॉन्स हेडर के साइज़ की सीमा (भले ही यह सुझाया गया तरीका न हो). हेडर के साइज़ की ज़्यादा से ज़्यादा सीमा तय करने के लिए, नीचे दिए गए निर्देशों का पालन करें मौजूदा सीमा देखने का तरीका.

मौजूदा सीमा कैसे देखें?

इस सेक्शन में, प्रॉपर्टी HTTPRequest.headers.limit की पुष्टि करने का तरीका बताया गया है को मैसेज प्रोसेसर पर एक नई वैल्यू के साथ अपडेट किया गया है.

  1. मैसेज प्रोसेसर मशीन पर, प्रॉपर्टी खोजें HTTPRequest.headers.limit /opt/apigee/edge-message-processor/conf डायरेक्ट्री और इसे चुनें नीचे दिखाए गए तरीके से देखें कि कौनसा मान सेट किया गया है:
    grep -ri "HTTPRequest.headers.limit" /opt/apigee/edge-message-processor/conf
    
  2. ऊपर दिए गए निर्देश का सैंपल नतीजा कुछ इस तरह है:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.headers.limit=25k
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  3. ऊपर दिए गए उदाहरण के तौर पर, ध्यान दें कि प्रॉपर्टी HTTPRequest.headers.limit http.properties में को 25k मान के साथ सेट किया गया है.

    इससे पता चलता है कि Apigee for Private में, अनुरोध के हेडर के साइज़ की सीमा को कॉन्फ़िगर किया गया है क्लाउड का साइज़ 25 केबी है.

खास जानकारी

Apigee Edge के लिए यह ज़रूरी है कि क्लाइंट ऐप्लिकेशन, बड़े साइज़ के हेडर न भेजे अनुरोध. अगर अनुरोध में ऐसे हेडर शामिल हैं जिनका कुल साइज़, तय सीमा से ज़्यादा है, तो Apigee, इस आरएफ़सी के मुताबिक 431 Request Header Fields Too Large देता है विशेषताएं:

खास जानकारी
आरएफ़सी 6585, सेक्शन 5: 431 अनुरोध के हेडर के फ़ील्ड बहुत बड़े हैं

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

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

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

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

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

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

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