'এই API ব্যবহার করে দেখুন' প্যানেলে অজানা সমস্যা

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

সমস্যার উপসর্গ

ইন্টিগ্রেটেড ডেভেলপার পোর্টাল থেকে করা API কলটি Unknown Error বা এই API ব্যবহার করে দেখুন প্যানেলে কোনও উত্তর না পাওয়ার কারণে ব্যর্থ হয়।

সমস্যার মেসেজ

ইন্টিগ্রেটেড পোর্টালে API অনুরোধের জন্য আপনি খালি উত্তর বা নিম্নলিখিত সমস্যার মেসেজ দেখতে পেতে পারেন:

Unknown Error

Developer Tools > Console ট্যাবে, আপনি নিম্নলিখিত সমস্যা দেখতে পাবেন:

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.

Developer Tools > Console tab-এ দেখানো সাধারণ সমস্যার মেসেজটি হল:

জেনেরিক সমস্যার মেসেজ, বড় ছবি দেখতে ক্লিক করুন সাধারণ সমস্যার মেসেজ

সম্ভাব্য কারণ

কারণ বিবরণ এর জন্য প্রযোজ্য সমস্যার সমাধান সংক্রান্ত নির্দেশাবলী
নীতি সংক্রান্ত অনিয়ম সমাধান করা হয়নি API অনুরোধের রানটাইম ফ্লোতে কোনও নীতি কাজ না করলে, CORS হেডার ছাড়াই ডিফল্ট সমস্যার উত্তর পাঠানো হয়। Edge পাবলিক ক্লাউড ব্যবহারকারী
Access-Control-Allow-Origin-এর জন্য একাধিক ভ্যালু Assign Message Policy-তে Set-এর পরিবর্তে Add ব্যবহার করা। Edge পাবলিক ক্লাউড ব্যবহারকারী

কারণ: নীতি সংক্রান্ত সমস্যা সমাধান করা হয়নি

ডায়াগনসিস

  1. যাচাই করে দেখুন যে সমস্যাটি শুধুমাত্র তখনই হচ্ছে যখন 2XX উত্তর প্রত্যাশিত।
  2. অনুরোধ ব্যর্থ হলে, প্রক্সি ফ্লোতে নীতি আছে কিনা তা যাচাই করুন।
  3. অনুরোধটি ট্র্যাক করুন এবং continueOnError="false" সহ কোনও নীতি ব্যর্থ হচ্ছে কিনা এবং সমস্যা তৈরি করছে কিনা তা চেক করুন।
    1. যদি হ্যাঁ হয়, তাহলে যাচাই করে দেখুন যে AssignMessage CORS নীতি ত্রুটি প্রতিক্রিয়া ফ্লোতে প্রয়োগ করা হয়েছে কিনা।
    2. যদি না হয়, তাহলে এটিই এই সমস্যার কারণ।
      এর কারণ হল, যখন কোনও এলিমেন্ট সহ কোনও নীতি continueOnError="false" কাজ করে না, তখন অনুরোধটি ভুল সংক্রান্ত উত্তর দেওয়ার ফ্লোতে প্রবেশ করে। সমস্যার উত্তর দেওয়ার ফ্লোতে যদি কোনও স্পষ্ট সমস্যা হ্যান্ডেলিং না থাকে, তাহলে নীতি অনুযায়ী ডিফল্ট সমস্যার উত্তর ফেরত পাঠানো হয়। এই সমস্যার উত্তরে কোনও CORS হেডার নেই। এর ফলে, ইন্টিগ্রেটেড ডেভেলপার পোর্টাল থেকে করা API কল Unknown error সহ ব্যর্থ হয়।

নিচের স্ক্রিনশটে একটি উদাহরণমূলক সমস্যার মেসেজ এবং একটি উদাহরণমূলক সফলতার মেসেজ দেখানো হয়েছে।

ইন্টিগ্রেটেড পোর্টালে এই API ব্যবহার করে দেখুন প্যানেলে এবং প্রক্সি ট্রেস উইন্ডোতে সমস্যার মেসেজের উদাহরণ:

সমস্যার মেসেজের উদাহরণ, বড় ছবি দেখতে ক্লিক করুন সমস্যার মেসেজের উদাহরণ

ইন্টিগ্রেটেড পোর্টালে এই API ব্যবহার করে দেখুন প্যানেলে এবং প্রক্সি ট্রেস উইন্ডোতে সাফল্যের মেসেজের উদাহরণ:

সফলতার মেসেজের উদাহরণ, বড় ছবি দেখতে ক্লিক করুন সফলতার মেসেজের উদাহরণ

রেজোলিউশন

  1. ডিফল্ট সমস্যার মেসেজের উপর নির্ভর না করে, সমস্যার উত্তর হ্যান্ডেল করার জন্য একটি ফল্ট রুল প্রয়োগ করতে হবে। উপযুক্ত হেডার সহ 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. কোনও ট্রেস সেশনে Access-Control-Allow-Origin হেডার ভ্যালু চেক করুন।
  2. Access-Control-Allow-Origin হেডার শুধুমাত্র একটি মান সেট করার অনুমতি দেয়। একাধিক ভ্যালু সেট করলে CORS সংক্রান্ত সমস্যা হতে পারে এবং ডেভেলপার পোর্টাল কোনও উত্তর রেন্ডার করতে পারবে না।
  3. ট্রেসে Access-Control-Allow-Origin হেডারের ভ্যালু যদি এমন হয়:
    *,*
    তাহলে বুঝতে হবে যে টার্গেট সার্ভার এবং AssignMessage CORS নীতি, দু'টিই এর ভ্যালু সেট করছে।
  4. কোনও ব্যবহারকারী <Add> element-এর জন্য Access-Control-Allow-Origin ব্যবহার করলে নীতিতে অথবা ব্যাকএন্ড নিজেই একাধিক ভ্যালু সেট করলে এটি হতে পারে।

*,*-এর সমান Access-Control-Allow-Origin-এর উদাহরণ:

যেমন, একাধিক মান ব্যবহার করা হয়েছে, বড় ছবি দেখতে ক্লিক করুন ব্যবহার করা একাধিক ভ্যালুর উদাহরণ

*-এর সমান Access-Control-Allow-Origin-এর উদাহরণ:

একক ভ্যালুর উদাহরণ ব্যবহার করা হয়েছে, বড় ছবি দেখতে ক্লিক করুন ব্যবহৃত একক ভ্যালুর উদাহরণ

<Add> ব্যবহার করে উদাহরণ:

যোগ করার উদাহরণ, বড় ছবি দেখতে ক্লিক করুন যোগ করার উদাহরণ

<Set> ব্যবহার করে উদাহরণ:

Set ব্যবহার করার উদাহরণ, বড় ছবি দেখতে ক্লিক করুন Set ব্যবহার করে উদাহরণ

রেজোলিউশন

  1. Access-Control-Allow-Origin-এর জন্য <Set> element (পরিবর্তে <Add> 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 সহায়তা টিমের সাথে যোগাযোগ করুন:

  • সংস্থার নাম
  • পরিবেশের নাম
  • API প্রক্সির নাম
  • সমস্যাটি আবার তৈরি করতে ব্যবহৃত সম্পূর্ণ curl কমান্ড
  • API অনুরোধের জন্য ট্রেস ফাইল
  • টার্গেট/ব্যাকএন্ড সার্ভার থেকে পাওয়া উত্তরের সম্পূর্ণ আউটপুট, সাথে পেলোডের সাইজ