আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
উপসর্গ
ইন্টিগ্রেটেড ডেভেলপার পোর্টাল থেকে API কল Unknown Error
বা এই API প্যানেলে একটি খালি প্রতিক্রিয়া সহ ব্যর্থ হয়৷
ত্রুটি বার্তা
আপনি ইন্টিগ্রেটেড পোর্টালে API অনুরোধের জন্য একটি খালি প্রতিক্রিয়া বা নিম্নলিখিত ত্রুটি বার্তা দেখতে পারেন:
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.
বিকাশকারী সরঞ্জাম > কনসোল ট্যাবে দেখা একটি জেনেরিক ত্রুটি বার্তা নিম্নরূপ:
সম্ভাব্য কারণ
কারণ | বর্ণনা | সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য |
---|---|---|
অনিয়ন্ত্রিত নীতি ত্রুটি | ডিফল্ট ত্রুটি প্রতিক্রিয়া CORS শিরোনাম ছাড়াই পাঠানো হয়, যখন কোনো নীতি API অনুরোধের রানটাইম প্রবাহে ব্যর্থ হয়। | এজ পাবলিক ক্লাউড ব্যবহারকারীরা |
অ্যাক্সেস-কন্ট্রোল-অ্যালো-অরিজিনের জন্য একাধিক মান | অ্যাসাইন মেসেজ পলিসিতে সেটের পরিবর্তে অ্যাড ব্যবহার করা। | এজ পাবলিক ক্লাউড ব্যবহারকারীরা |
কারণ: অনিয়ন্ত্রিত নীতি ত্রুটি
রোগ নির্ণয়
- যাচাই করুন যে সমস্যাটি তখনই ঘটে যখন একটি অ
2XX
প্রতিক্রিয়া প্রত্যাশিত হয়। - ব্যর্থ অনুরোধের জন্য, প্রক্সি ফ্লোতে নীতি আছে কিনা তা যাচাই করুন।
- অনুরোধটি ট্রেস করুন এবং
continueOnError="false"
সহ একটি নীতি ব্যর্থ হচ্ছে এবং ত্রুটি বাড়াচ্ছে কিনা তা পরীক্ষা করুন৷ - যদি হ্যাঁ, তাহলে যাচাই করুন যে AssignMessage CORS নীতিটি ত্রুটির প্রতিক্রিয়া প্রবাহে কার্যকর করা হয়েছে বা না।
- যদি না হয়, তাহলে যে এই সমস্যার কারণ.
এর কারণ হল যখনcontinueOnError="false"
উপাদান সহ যেকোন নীতি ব্যর্থ হয়, তখন অনুরোধটি ত্রুটি প্রতিক্রিয়া প্রবাহে প্রবেশ করে। যদি ত্রুটি প্রতিক্রিয়া প্রবাহে কোনো স্পষ্ট ত্রুটি হ্যান্ডলিং না থাকে, তাহলে নীতির সাথে সম্পর্কিত ডিফল্ট ত্রুটি প্রতিক্রিয়া ফেরত পাঠানো হয়। এই ত্রুটি প্রতিক্রিয়া কোনো CORS শিরোনাম নেই. ফলস্বরূপ, ইন্টিগ্রেটেড ডেভেলপার পোর্টাল থেকে API কলUnknown error
সাথে ব্যর্থ হয়।
নিম্নলিখিত স্ক্রিনশটগুলি একটি উদাহরণ ত্রুটি বার্তা এবং একটি উদাহরণ সাফল্যের বার্তা প্রদর্শন করে৷
ইন্টিগ্রেটেড পোর্টালে উদাহরণ ত্রুটি বার্তা এই API প্যানেল এবং প্রক্সি ট্রেস উইন্ডোতে চেষ্টা করুন:
ইন্টিগ্রেটেড পোর্টালে সাফল্যের বার্তা উদাহরণ এই API প্যানেল এবং প্রক্সি ট্রেস উইন্ডোতে চেষ্টা করুন:
রেজোলিউশন
- ডিফল্ট ত্রুটি বার্তার উপর নির্ভর করার পরিবর্তে, ত্রুটির প্রতিক্রিয়া পরিচালনা করতে একটি ফল্ট নিয়ম প্রয়োগ করতে হবে। উপযুক্ত শিরোনাম সহ একটি AssignMessage CORS নীতি অন্তর্ভুক্ত করুন এবং এটি FaultRule- এ আহ্বান করুন।
- অনেক সময় প্রতিটি দোষের জন্য একটি ফল্ট নিয়ম সংজ্ঞায়িত করা সম্ভবপর নাও হতে পারে; তাই, 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 হেডারের মান পরীক্ষা করুন।
- Access-Control-Allow-Origin হেডার শুধুমাত্র একটি মান সেট করার অনুমতি দেয়। একাধিক মান সেট করার ফলে একটি CORS সমস্যা হতে পারে এবং বিকাশকারী পোর্টাল কোনো প্রতিক্রিয়া রেন্ডার করতে ব্যর্থ হবে।
- যদি ট্রেসে অ্যাক্সেস-কন্ট্রোল-অনুমতি-অরিজিন হেডারের মানটি এরকম দেখায়:
*,*
এর মানে লক্ষ্য সার্ভার এবং AssignMessage CORS নীতি উভয়ই এর মান নির্ধারণ করছে। - এটি ঘটতে পারে যখন কোনও ব্যবহারকারী নীতিতে অ্যাক্সেস-কন্ট্রোল-অনুমতি-অরিজিনের জন্য
<Add> element
ব্যবহার করে, বা ব্যাকএন্ড নিজেই একাধিক মান সেট করে।
এক্সেস-কন্ট্রোল-অ্যালো-অরিজিন এর সমান *,*
:
এক্সেস-কন্ট্রোল-অ্যালো-অরিজিন এর সমান *
:
<Add>
ব্যবহার করে উদাহরণ:
<Set>
ব্যবহার করে উদাহরণ:
রেজোলিউশন
- প্রস্তাবিত পদ্ধতি হল অ্যাক্সেস-কন্ট্রোল-অ্যালো-অরিজিনের জন্য
<Set> element
(<Add> element
পরিবর্তে) ব্যবহার করা কারণ শুধুমাত্র একটি মান অনুমোদিত। - বিকল্পভাবে, শুধুমাত্র এক জায়গায় 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 প্রক্সি নাম
- ত্রুটি পুনরুত্পাদন করতে ব্যবহৃত সম্পূর্ণ কার্ল কমান্ড
- API অনুরোধের জন্য ট্রেস ফাইল
- পেলোডের আকার সহ লক্ষ্য/ব্যাকএন্ড সার্ভার থেকে প্রতিক্রিয়ার সম্পূর্ণ আউটপুট