आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
समस्या का ब्यौरा
क्लाइंट ऐप्लिकेशन को इस गड़बड़ी के साथ 502 Bad Gateway का एचटीटीपी स्टेटस कोड मिलता है
एपीआई कॉल के रिस्पॉन्स के तौर पर protocol.http.Response405WithoutAllowHeader कोड.
गड़बड़ी का मैसेज
क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:
HTTP/1.1 502 Bad Gateway
इसके अलावा, आपको गड़बड़ी का यह मैसेज भी दिख सकता है:
{
"fault":{
"faultstring":"Received 405 Response without Allow Header",
"detail":{
"errorcode":"protocol.http.Response405WithoutAllowHeader"
}
}
}संभावित कारण
यह गड़बड़ी तब होती है, जब बैकएंड सर्वर 405 Method Not Allowed स्थिति के साथ जवाब देता है
Allow हेडर के बिना कोड.
स्पेसिफ़िकेशन के मुताबिक
RFC 7231, सेक्शन 6.5.5: 405 तरीके की अनुमति नहीं है, तो ऑरिजिन सर्वर के लिए उम्मीद की जाती है
405 के जवाब में Allow हेडर फ़ील्ड जनरेट करना और भेजना ज़रूरी है
मौजूदा टारगेट रिसॉर्स के लिए इस्तेमाल किए जा सकने वाले तरीकों की सूची. अगर ऐसा नहीं है, तो Apigee
502 Bad Gateway और गड़बड़ी कोड protocol.http.Response405WithoutAllowHeader.
| वजह | ब्यौरा | इसके लिए लागू होने वाले, समस्या हल करने के निर्देश |
|---|---|---|
| बैकएंड सर्वर से हेडर की अनुमति के बिना 405 रिस्पॉन्स | एपीआई अनुरोध को प्रोसेस करने वाला बैकएंड सर्वर, Allow हेडर के बिना 405 स्टेटस कोड के साथ रिस्पॉन्स देता है. |
Edge के सार्वजनिक और प्राइवेट क्लाउड उपयोगकर्ता |
गड़बड़ी की जांच करने के सामान्य तरीके
इस गड़बड़ी का पता लगाने के लिए, इनमें से किसी एक टूल/तकनीक का इस्तेमाल करें:
एपीआई मॉनिटरिंग
एपीआई मॉनिटरिंग का इस्तेमाल करके, गड़बड़ी का पता लगाने के लिए:
- Edge यूज़र इंटरफ़ेस (यूआई) में ऐसे उपयोगकर्ता के तौर पर लॉग इन करें जिसके पास भूमिका होनी चाहिए.
उस संगठन पर जाएं जिसमें आपको समस्या की जांच करनी है.
- विश्लेषण करें > एपीआई मॉनिटरिंग > पेज की जांच करें.
- वह समयावधि चुनें जिसमें आपको गड़बड़ियां दिखी थीं.
समय के हिसाब से गड़बड़ी कोड दिखाएं.
वह सेल चुनें जिसमें गड़बड़ी का कोड है
protocol.http.Response405WithoutAllowHeaderजैसा कि नीचे दिखाया गया है:
गड़बड़ी के कोड
protocol.http.Response405WithoutAllowHeaderके बारे में जानकारी नीचे दिखाए गए तरीके से दिखाया जाता है:
लॉग देखें पर क्लिक करें और ज़्यादा जानकारी देखने के लिए, पूरे न हो पाने वाले अनुरोधों में से किसी एक को बड़ा करें.
- लॉग विंडो में जाकर, यह जानकारी देखें:
- स्टेटस कोड:
502 - गलत सोर्स:
target - गलत कोड:
protocol.http.Response405WithoutAllowHeader.
- स्टेटस कोड:
- अगर गलत सोर्स
targetहै और गलत कोडprotocol.http.Response405WithoutAllowHeaderहै, तो इससे पता चलता है कि बैकएंड सर्वर ने405 Method Not Allowedस्थिति कोड के साथAllowहेडर.
ट्रेस करने वाला टूल
ट्रेस टूल का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:
- सक्षम करें
सेशन को ट्रेस करें और
502 Bad Gatewayगड़बड़ी आने तक इंतज़ार करें, या- अगर आपको समस्या के बारे में अच्छे से पता है, तो समस्या के बारे में जानने के लिए एपीआई को कॉल करें -
502 Bad Gatewayगड़बड़ी
पक्का करें कि सभी FlowInfos दिखाएं चालू है:
- पूरे न हो पाने वाले अनुरोधों में से किसी एक को चुनें और ट्रेस की जांच करें.
- ट्रेस के अलग-अलग फ़ेज़ पर जाएं और देखें कि गड़बड़ी कहां हुई.
आपको गड़बड़ी आम तौर पर टारगेट सर्वर को भेजे गए अनुरोध के बाद फ़्लो में दिखेगी फ़ेज़:
ट्रेस में गड़बड़ी की वैल्यू नोट करें.
ऊपर दिया गया सैंपल ट्रेस, गड़बड़ी को
Received 405 Response without Allow Headerके तौर पर दिखाता है. बैकएंड पर अनुरोध भेजे जाने के बाद, Apigee ने गड़बड़ी की जानकारी दी है सर्वर से पता चलता है कि बैकएंड सर्वर ने405रिस्पॉन्स स्टेटस कोड भेजा हैAllowहेडर के बिना.- ट्रेस में AX (Analytics डेटा रिकॉर्ड किया गया) चरण पर जाएं और उस पर क्लिक करें.
चरण की जानकारी में नीचे की ओर स्क्रोल करके, गड़बड़ी / रिस्पॉन्स हेडर सेक्शन पर जाएं पैनल को जांच सकते हैं और X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू, जैसा कि यहां दिखाया गया है:
- आपको X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू इस तरह दिखेंगी
protocol.http.Response405WithoutAllowHeaderऔरtargetकान में, से पता चल रहा है कि यह गड़बड़ी इसलिए हुई है, क्योंकि बैकएंड नेAllowहेडर के बिना405रिस्पॉन्स स्टेटस कोड.रिस्पॉन्स हेडर मान X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source target
NGINX
NGINX ऐक्सेस लॉग का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:
- अगर आप निजी क्लाउड उपयोगकर्ता हैं, तो आपके पास NGINX ऐक्सेस लॉग का इस्तेमाल करके, यह तय करने का विकल्प होता है कि
एचटीटीपी
502की गड़बड़ियों के बारे में खास जानकारी. NGINX ऐक्सेस लॉग देखें:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
कहां: ORG, ORG, और PORT# को असल वैल्यू से बदल दिया जाता है.
- यह देखने के लिए खोजें कि क्या गड़बड़ी कोड में कोई
502गड़बड़ी है किसी खास अवधि के दौरानprotocol.http.Response405WithoutAllowHeader(अगर समस्या पिछली बार हुई है) या अगर कोई अनुरोध अब भी पूरा नहीं हो पा रहा है502. अगर आपको X-Apigee-fault-code की कोई ऐसी
502गड़बड़ी मिलती है जोprotocol.http.Response405WithoutAllowHeaderका मान, फिर X-Apigee-fault-source. की वैल्यू.NGINX ऐक्सेस लॉग में 502 गड़बड़ी का नमूना:
NGINX ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में X-Apigee- के लिए ये वैल्यू हैं गड़बड़ी का कोड और X-Apigee-fault-source:
रिस्पॉन्स हेडर मान X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source target
वजह: बैकएंड सर्वर से हेडर की अनुमति के बिना 405 रिस्पॉन्स
संक्रमण की जांच
502 Bad Gatewayके लिए, गलत कोड और गलत सोर्स की पहचान करें एपीआई मॉनिटरिंग, ट्रेस टूल या NGINX ऐक्सेस लॉग का इस्तेमाल करके, जैसा कि यहां बताया गया है डाइग्नोस्टिक्स के सामान्य तरीके.- अगर गलत कोड
protocol.http.Response405WithoutAllowHeaderहै और गड़बड़ी के सोर्स की वैल्यूtargetहै. इससे पता चलता है कि बैकएंड सर्वर में नेAllowहेडर के बिना405स्टेटस कोड के साथ जवाब दिया. इसलिए, Apigee, जवाब देने के लिए गड़बड़ी कोड के साथ502 Bad Gatewayदेता हैprotocol.http.Response405WithoutAllowHeader.
रिज़ॉल्यूशन
समस्या हल करने के लिए इनमें से किसी एक तरीके का इस्तेमाल करें:
बैकएंड सर्वर
विकल्प #1: 'अनुमति दें' हेडर के साथ 405 स्टेटस कोड भेजने के लिए, बैकएंड सर्वर को ठीक करें:
पक्का करें कि बैकएंड सर्वर हमेशा इन निर्देशों का पालन करता हो आरएफ़सी 7231, सेक्शन 6.5.5: 405 मेथड की अनुमति नहीं है और इसे
405स्टेटस के साथ भेजा जाता हैAllowहेडर के हिस्से के तौर पर स्वीकार किए गए तरीकों की सूची शामिल करके कोड जैसा कि नीचे दिखाया गया है:Allow: HTTP_METHODS
- उदाहरण के लिए, अगर आपका बैकएंड सर्वर
GET,POSTऔरHEADतरीके का इस्तेमाल किया है, तो आपको यह पक्का करना होगा किAllowहेडर में इस तरह दिखेगी:Allow: GET, POST, HEAD
गड़बड़ी ठीक करना
विकल्प #2: अपने एपीआई के 'अनुमति दें' हेडर के साथ 405 स्टेटस कोड भेजने के लिए, गड़बड़ी को मैनेज करने की सुविधा का इस्तेमाल करें प्रॉक्सी:
अगर बैकएंड सर्वर, Allow के बिना 405 स्टेटस कोड दिखाता है
हेडर है, तो आप 405 स्थिति कोड और
आपके एपीआई प्रॉक्सी से इस तरह Allow हेडर:
इस तरह की नीति बनाएं assignMessage की नीति या RaiseFault की नीति पढ़ें और
Allowहेडर और कस्टम405दिखाई देगा.'अनुमति दें' हेडर के साथ 405 भेजने के लिए, AllowMessage नीति का सैंपल:
<AssignMessage async="false" continueOnError="false" enabled="true" name="AM-405WithAllowHeader"> <DisplayName>AM-405WithAllowHeader</DisplayName> <Set> <Payload contentType="application/json">{"Specified method is not allowed. Please use one of the methods mentioned in the Allow header."}</Payload> <StatusCode>405</StatusCode> <ReasonPhrase>Method Not Allowed</ReasonPhrase> </Set> <Add> <Headers> <Header name="Allow">GET, POST, HEAD</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
TargetEndpointमें ऐसाFaultRuleबनाएं जो नीति को शुरू करता हो गड़बड़ी कोड के साथ502गड़बड़ी मिलने परprotocol.http.Response405WithoutAllowHeader.FultRule को दिखाने वाला TargetEndpoint कॉन्फ़िगरेशन का सैंपल:
<TargetEndpoint name="default"> ... <FaultRules> <FaultRule name="405WithoutAllowHeader"> <Step> <Name>AM-405WithAllowHeader</Name> </Step> <Condition>(fault.name = "Response405WithoutAllowHeader")</Condition> </FaultRule> </FaultRules>- इन बदलावों को अपने एपीआई प्रॉक्सी के नए वर्शन में सेव करें और वर्शन को डिप्लॉय करें.
- एपीआई कॉल करें और पुष्टि करें कि आपको
405Allowहेडर.
प्रॉपर्टी कॉन्फ़िगर करें
विकल्प #3: Apigee Edge को रोकने के लिए, मैसेज प्रोसेसर में प्रॉपर्टी को कॉन्फ़िगर करना 502 कोड वाला गड़बड़ी का मैसेज दिख रहा है
- अगर आप प्राइवेट क्लाउड उपयोगकर्ता हैं, तो आपके पास प्रॉपर्टी को अपडेट करने का विकल्प होता है
Apigee Edge को रोकने के लिए,
HTTP.ignore.allow_header.for.405सेtrueपर स्विच करें502गड़बड़ी दिखाना, भले ही बैकएंड सर्वर405की मदद से जवाब दे 'कैसे करें' गाइड का इस्तेमाल करकेAllowहेडर के बिना स्थिति कोड: 'मैसेज प्रोसेसर' में 405 प्रॉपर्टी के लिए, अनदेखा करने की सुविधा को कॉन्फ़िगर करने से, हेडर को अनुमति मिलती है. - अगर आप पब्लिक क्लाउड उपयोगकर्ता हैं, तो कृपया Apigee Edge की सहायता टीम से संपर्क करें
खास जानकारी
Apigee, बैकएंड सर्वर से 405 Method Not Allowed रिस्पॉन्स की उम्मीद करता है
और नीचे दी गई खास जानकारी के मुताबिक Allow हेडर का इस्तेमाल करें:
| खास जानकारी | |
|---|---|
| आरएफ़सी 7231, सेक्शन 6.5.5: 405 वाले तरीके की अनुमति नहीं है | |
| आरएफ़सी 7231, सेक्शन 7.4.1: अनुमति दें |
इन बातों का ध्यान रखें
हमारा सुझाव है कि आप बैकएंड सर्वर को ठीक करें, ताकि 405 स्टेटस कोड भेजा जा सके
Allow हेडर के साथ निर्देशों का पालन करें.
आरएफ़सी 7231, सेक्शन 6.5.5: 405 वाले तरीके की अनुमति नहीं है.
अगर आपको अब भी Apigee की सहायता टीम से कोई मदद चाहिए, तो ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है.
ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है
अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो यह जानकारी इकट्ठा करें और उसके बाद Apigee Edge सहायता से संपर्क करें.
अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो यह जानकारी दें:
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी का नाम
curlनिर्देश को पूरा करें. इसका इस्तेमाल करके,502 Bad Gatewayको इनके साथ फिर से बनाया गया गड़बड़ी का कोडprotocol.http.Response405WithoutAllowHeader- एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें
अगर आप निजी Cloud उपयोगकर्ता हैं, तो यह जानकारी दें:
- पूरे न हो पाने वाले अनुरोधों की वजह से, गड़बड़ी का पूरा मैसेज मिला
- परिवेश का नाम
- एपीआई प्रॉक्सी बंडल
- एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें
NGINX ऐक्सेस लॉग
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
कहां: ORG, ORG, और PORT# को असल वैल्यू से बदल दिया जाता है.
- मैसेज प्रोसेसर के सिस्टम लॉग
/opt/apigee/var/log/edge-message-processor/logs/system.log