'इस एपीआई पैनल' में ऐसी गड़बड़ी हुई जिसकी जानकारी नहीं है

यह Apigee Edge से जुड़े दस्तावेज़ हैं.
Go to the Apigee X documentation.
info

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

इंटिग्रेट किए गए डेवलपर पोर्टल से किया गया एपीआई कॉल, 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 के उपयोगकर्ता
Access-Control-Allow-Origin के लिए एक से ज़्यादा वैल्यू सेट करना Assign Message Policy में, Set के बजाय Add का इस्तेमाल करना. Edge Public Cloud के उपयोगकर्ता

वजह: नीति से जुड़ी गड़बड़ी को हैंडल न करना

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

  1. इस बात की पुष्टि करें कि यह समस्या सिर्फ़ तब होती है, जब 2XX के अलावा कोई और जवाब मिलने की उम्मीद हो.
  2. अनुरोधों के काम न करने पर, इस बात की पुष्टि करें कि प्रॉक्सी फ़्लो में नीतियां मौजूद हैं.
  3. अनुरोध को ट्रेस करें और देखें कि कोई नीति काम नहीं कर रही है और गड़बड़ी की वजह बन रही है या नहीं continueOnError="false".
    1. अगर ऐसा है, तो इस बात की पुष्टि करें कि गड़बड़ी के जवाब के फ़्लो में, AssignMessage CORS नीति लागू की गई थी या नहीं.
    2. अगर ऐसा नहीं है, तो यही इस समस्या की वजह है.
      ऐसा इसलिए होता है, क्योंकि continueOnError="false" एलिमेंट वाली कोई नीति काम न करने पर, अनुरोध गड़बड़ी के जवाब के फ़्लो में चला जाता है. अगर गड़बड़ी के जवाब के फ़्लो में, गड़बड़ी को साफ़ तौर पर हैंडल नहीं किया जाता है, तो नीति के हिसाब से गड़बड़ी का डिफ़ॉल्ट जवाब वापस भेजा जाता है. इस गड़बड़ी के जवाब में, सीओआरएस हेडर नहीं होते. नतीजे के तौर पर, इंटिग्रेट किए गए डेवलपर पोर्टल से किया गया एपीआई कॉल, Unknown error के साथ पूरा नहीं हो पाता.

यहां दिए गए स्क्रीनशॉट में, गड़बड़ी के मैसेज और उदाहरण सफलता के मैसेज का उदाहरण दिखाया गया है.

इंटिग्रेट किए गए पोर्टल के इस एपीआई को आज़माएं पैनल और प्रॉक्सी की ट्रेस विंडो में, गड़बड़ी के मैसेज का उदाहरण:

गड़बड़ी के मैसेज का उदाहरण, बड़ी इमेज देखने के लिए क्लिक करें गड़बड़ी के मैसेज का उदाहरण

इंटिग्रेट किए गए पोर्टल के इस एपीआई को आज़माएं पैनल और प्रॉक्सी की ट्रेस विंडो में, सफलता के मैसेज का उदाहरण:

सफलता का उदाहरण देने वाला मैसेज, बड़ी इमेज के लिए क्लिक करें सफलता के मैसेज का उदाहरण

रिज़ॉल्यूशन

  1. गड़बड़ी के डिफ़ॉल्ट मैसेज पर निर्भर रहने के बजाय, गड़बड़ी के जवाब को हैंडल करने के लिए, fault rule लागू किया जाना चाहिए. उचित हेडर के साथ AssignMessage CORS नीति शामिल करें और इसे FaultRule में लागू करें.
  2. कभी-कभी, हर गड़बड़ी के लिए फ़ॉल्ट रूल तय करना मुमकिन नहीं होता. इसलिए, AssignMessage CORS नीति को लागू करने के लिए, डिफ़ॉल्ट फ़ॉल्ट रूल लागू किया जा सकता है:
<?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 के लिए एक से ज़्यादा वैल्यू सेट करना

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

  1. trace session में, Access-Control-Allow-Origin हेडर की वैल्यू देखें.
  2. Access-Control-Allow-Origin हेडर के लिए, सिर्फ़ एक वैल्यू सेट की जा सकती है. एक से ज़्यादा वैल्यू सेट करने पर, सीओआरएस से जुड़ी समस्या हो सकती है. साथ ही, डेवलपर पोर्टल कोई भी जवाब रेंडर नहीं कर पाएगा.
  3. अगर ट्रेस में, Access-Control-Allow-Origin हेडर की वैल्यू इस तरह दिखती है:
    *,*
    तो इसका मतलब है कि टारगेट सर्वर और AssignMessage CORS नीति, दोनों ही इसकी वैल्यू सेट कर रहे हैं.
  4. ऐसा तब हो सकता है, जब किसी उपयोगकर्ता ने किसी नीति में Access-Control-Allow-Origin के लिए <Add> element का इस्तेमाल किया हो या बैकएंड खुद ही एक से ज़्यादा वैल्यू सेट कर रहा हो.

Access-Control-Allow-Origin की वैल्यू *,* होने का उदाहरण:

उदाहरण के तौर पर, इस्तेमाल की गई कई वैल्यू. बड़ी इमेज देखने के लिए क्लिक करें इस्तेमाल की गई एक से ज़्यादा वैल्यू का उदाहरण

Access-Control-Allow-Origin की वैल्यू * होने का उदाहरण:

इस्तेमाल की गई एक वैल्यू का उदाहरण, बड़ी इमेज के लिए क्लिक करें इस्तेमाल की गई सिंगल वैल्यू का उदाहरण

<Add> का इस्तेमाल करने का उदाहरण:

जोड़ें का इस्तेमाल करने का उदाहरण, बड़ी इमेज के लिए क्लिक करें Add का इस्तेमाल करने का उदाहरण

<Set> का इस्तेमाल करने का उदाहरण:

Set का इस्तेमाल करने का उदाहरण, बड़ी इमेज देखने के लिए क्लिक करें Set का इस्तेमाल करने का उदाहरण

रिज़ॉल्यूशन

  1. हमारा सुझाव है कि Access-Control-Allow-Origin के लिए, <Add> element के बजाय <Set> element का इस्तेमाल करें, क्योंकि सिर्फ़ एक वैल्यू सेट की जा सकती है.
  2. इसके अलावा, Access-Control-Allow-Origin हेडर को सिर्फ़ एक जगह सेट करें. जैसे, AssignMessage CORS नीति या टारगेट सर्वर.
<?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 की सहायता टीम से संपर्क करें:

  • संगठन का नाम
  • परिवेश का नाम
  • एपीआई प्रॉक्सी का नाम
  • गड़बड़ी को फिर से दिखाने के लिए इस्तेमाल किया गया पूरा कर्ल कमांड
  • एपीआई अनुरोधों के लिए ट्रेस फ़ाइल
  • टारगेट/बैकएंड सर्वर से मिले जवाब का पूरा आउटपुट और पेलोड का साइज़