Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
समस्या का ब्यौरा
इंटिग्रेट किए गए डेवलपर पोर्टल से एपीआई कॉल नहीं हो पाता,
Unknown Error
या
इस एपीआई को आज़माएं
पैनल में कोई जवाब न मिले.
गड़बड़ी के मैसेज
इंटिग्रेट किए गए पोर्टल में, एपीआई अनुरोधों के लिए आपको कोई खाली जवाब या गड़बड़ी का यह मैसेज दिख सकता है:
Unknown Error
डेवलपर टूल > कंसोल टैब पर, आपको यह गड़बड़ी दिखेगी:
Access to XMLHTTPRequest at 'API_URL' from origin 'URL_of_Integrated_DevPortal' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
डेवलपर टूल > कंसोल टैब में दिखने वाला एक सामान्य गड़बड़ी का मैसेज इस तरह है:
संभावित कारण
वजह | ब्यौरा | समस्या हल करने के लिए निर्देश |
---|---|---|
नीति की गड़बड़ी को हैंडल नहीं किया जा सका | जब एपीआई अनुरोध के रनटाइम फ़्लो में कोई नीति फ़ेल हो जाती है, तो डिफ़ॉल्ट गड़बड़ी का रिस्पॉन्स, सीओआरएस हेडर के बिना भेजा जाता है. | Edge Public Cloud के उपयोगकर्ता |
ऐक्सेस-कंट्रोल-अनुमति-ऑरिजिन के लिए एक से ज़्यादा वैल्यू | मैसेज की नीति असाइन करें में 'सेट करें' के बजाय, जोड़ें का इस्तेमाल किया जा रहा है. | Edge Public Cloud के उपयोगकर्ता |
वजह: नीति में हुई गड़बड़ी
संक्रमण की जांच
- इस बात की पुष्टि करें कि समस्या सिर्फ़ तब होती है, जब बिना
2XX
वाले जवाब की उम्मीद हो. - पूरे न हो पाने वाले अनुरोधों के लिए, पुष्टि करें कि प्रॉक्सी फ़्लो में नीतियां मौजूद हैं.
-
अनुरोध को ट्रेस करें और देखें कि क्या
continueOnError="false"
के साथ कोई नीति काम नहीं कर रही है और गड़बड़ी ठीक कर रही है. - अगर हां, तो पुष्टि करें कि assignMessage सीओआरएस नीति लागू की गई थी या गड़बड़ी के रिस्पॉन्स फ़्लो में नहीं थी.
- अगर ऐसा नहीं है, तो इस समस्या की वजह यही है.
ऐसा इसलिए होता है, क्योंकि जबcontinueOnError="false"
एलिमेंट वाली कोई नीति काम नहीं करती, तो अनुरोध के जवाब में गड़बड़ी का रिस्पॉन्स फ़्लो शुरू हो जाता है. अगर गड़बड़ी का जवाब देने के फ़्लो में साफ़ तौर पर कोई गड़बड़ी ठीक नहीं की जाती है, तो नीति से जुड़ी गड़बड़ी के डिफ़ॉल्ट रिस्पॉन्स को वापस भेज दिया जाता है. गड़बड़ी के इस जवाब में कोई सीओआरएस हेडर मौजूद नहीं है. इस वजह से, इंटिग्रेट किए गए डेवलपर पोर्टल से एपीआई कॉल,Unknown error
के साथ नहीं हो पाता.
नीचे दिए गए स्क्रीनशॉट में, गड़बड़ी के मैसेज का उदाहरण और सफलता के मैसेज का एक उदाहरण दिया गया है.
इंटिग्रेट किए गए पोर्टल में यह एपीआई आज़माएं पैनल और प्रॉक्सी ट्रेस विंडो में गड़बड़ी के मैसेज का उदाहरण:
इंटिग्रेट किए गए पोर्टल यह एपीआई आज़माएं पैनल में और प्रॉक्सी ट्रेस विंडो में, सफल होने के मैसेज का उदाहरण:
रिज़ॉल्यूशन
- गड़बड़ी के डिफ़ॉल्ट मैसेज पर भरोसा करने के बजाय, गड़बड़ी के रिस्पॉन्स को मैनेज करने के लिए, गड़बड़ी का नियम लागू करना ज़रूरी है. सही हेडर के साथ assignMessage सीओआरएस नीति शामिल करें और इसे FaultTerms में शुरू करें.
- कई बार ऐसा हो सकता है कि हर गड़बड़ी के लिए गड़बड़ी का नियम तय न किया जा सके. इसलिए, Assignments मैसेज सीओआरएस नीति को लागू करने के लिए, गड़बड़ी वाला डिफ़ॉल्ट नियम लागू किया जा सकता है:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProxyEndpoint name="proxy-endpoint-name"> <Description/> <!-- Add a default fault rule to add CORS --> <DefaultFaultRule name="fault-rule"> <Step> <Name>add-cors</Name> </Step> </DefaultFaultRule> <FaultRules/> <!-- <Flows /> Rest of the proxy definition --> </ProxyEndpoint>
वजह: Access-Control-Allow-Origin के लिए एक से ज़्यादा वैल्यू
संक्रमण की जांच
- किसी ट्रेस सेशन में Access-Control-Allow-Origin हेडर की वैल्यू देखें.
- Access-Control-Allow-Origin हेडर की मदद से, सिर्फ़ एक वैल्यू सेट की जा सकती है. एक से ज़्यादा वैल्यू सेट करने से सीओआरएस से जुड़ी समस्या हो सकती है और डेवलपर पोर्टल कोई जवाब रेंडर नहीं कर पाएगा.
- अगर ट्रेस में Access-Control-Allow-Origin हेडर की वैल्यू इस तरह दिखती है:
*,*
इसका मतलब है कि टारगेट सर्वर और AssignmentsMessage सीओआरएस नीति, दोनों इसकी वैल्यू सेट कर रही हैं. - ऐसा तब हो सकता है, जब उपयोगकर्ता ने
किसी नीति में Access-Control-Allow-Origin के लिए,
<Add> element
का इस्तेमाल किया हो या बैकएंड खुद एक से ज़्यादा वैल्यू सेट कर रहा हो.
*,*
के बराबर Access-Control-Allow-Origin का उदाहरण:
*
के बराबर Access-Control-Allow-Origin का उदाहरण:
<Add>
का इस्तेमाल करने का उदाहरण:
<Set>
का इस्तेमाल करने का उदाहरण:
रिज़ॉल्यूशन
- हमारा सुझाव है कि आप Access-Control-Allow-Origin के लिए, सिर्फ़ एक वैल्यू के तौर पर,
<Set> element
(<Add> element
के बजाय) का इस्तेमाल करें. - इसके अलावा, Access-Control-Allow-Origin हेडर को सिर्फ़ एक ही जगह पर सेट करें; assignMessage सीओआरएस नीति या टारगेट सर्वर.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="set-cors"> <DisplayName>Set CORS</DisplayName> <FaultRules/> <Properties/> <Set> <Headers> <Header name="Access-Control-Allow-Origin">*</Header> </Headers> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
अगर आपको अब भी Apigee की सहायता टीम से मदद चाहिए, तो गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है पर जाएं.
ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करनी होगी
गड़बड़ी की यह जानकारी इकट्ठा करें और फिर Apigee Edge की सहायता टीम से संपर्क करें:
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी का नाम
- गड़बड़ी को फिर से दिखाने के लिए इस्तेमाल किया गया पूरा कर्ल निर्देश
- एपीआई अनुरोधों के लिए ट्रेस फ़ाइल
- पेलोड के साइज़ के साथ, टारगेट/बैकएंड सर्वर से मिले रिस्पॉन्स का पूरा आउटपुट