415 অসমর্থিত মিডিয়া টাইপ - অসমর্থিত এনকোডিং

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

উপসর্গ

ক্লায়েন্ট অ্যাপ্লিকেশনটি API কলগুলির প্রতিক্রিয়া হিসাবে ত্রুটি কোড protocol.http.UnsupportedEncoding .http.UnsupportedEncoding সহ 415 Unsupported Media Type একটি HTTP স্ট্যাটাস কোড পায়।

ত্রুটি বার্তা

ক্লায়েন্ট অ্যাপ্লিকেশন নিম্নলিখিত প্রতিক্রিয়া কোড পায়:

HTTP/1.1 415 Unsupported Media Type

উপরন্তু, আপনি নীচে দেখানো একটির মত একটি ত্রুটি বার্তা পর্যবেক্ষণ করতে পারেন:

{
   "fault":{
      "faultstring":"Unsupported Encoding \"UTF-8\"",
      "detail":{
         "errorcode":"protocol.http.UnsupportedEncoding"
      }
   }
}

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

এই ত্রুটিটি ঘটবে যদি ক্লায়েন্ট কর্তৃক Apigee-কে পাঠানো HTTP অনুরোধে অথবা Apigee-এ ব্যাকএন্ড সার্ভারের পাঠানো HTTP প্রতিক্রিয়াতে নির্দিষ্ট করা Content-Encoding হেডারের মানটিতে Apigee দ্বারা সমর্থিত এনকোডিং থাকে না, RFC 7231- এর স্পেসিফিকেশন অনুযায়ী , বিভাগ 6.5.13: 415 অসমর্থিত মিডিয়া প্রকার

এই ত্রুটির সম্ভাব্য কারণগুলি নিম্নরূপ:

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
অনুরোধে ব্যবহৃত অসমর্থিত এনকোডিং অনুরোধ শিরোনাম Content-Encoding এ এনকোডিং রয়েছে যা Apigee Edge দ্বারা সমর্থিত নয়। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা
প্রতিক্রিয়ায় ব্যবহার করা অসমর্থিত এনকোডিং ব্যাকএন্ড সার্ভার প্রতিক্রিয়া শিরোনাম Content-Encoding এ এনকোডিং রয়েছে যা Apigee Edge দ্বারা সমর্থিত নয়। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা

সাধারণ রোগ নির্ণয়ের পদক্ষেপ

ত্রুটি নির্ণয় করতে, আপনি নিম্নলিখিত পদ্ধতিগুলির যে কোনও একটি ব্যবহার করতে পারেন:

API মনিটরিং

API মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. আপনার Apigee Edge অ্যাকাউন্টে সাইন ইন করুন
  2. আপনি যে সংস্থায় সমস্যাটি তদন্ত করতে চান সেখানে যান:

    ui org ড্রপ-ডাউন
  3. এনালাইজ > API মনিটরিং > ইনভেস্টিগেট পেজে নেভিগেট করুন।
  4. নির্দিষ্ট সময়সীমা নির্বাচন করুন যেখানে আপনি ত্রুটিগুলি পর্যবেক্ষণ করেছেন।
  5. প্রক্সি ফিল্টারটি সকলে সেট করা আছে তা নিশ্চিত করুন।
  6. সময়ের বিরুদ্ধে প্লট ফল্ট কোড
  7. একটি সেল নির্বাচন করুন যার ফল্ট কোড protocol.http.UnsupportedEncoding আছে।http.UnsupportedEncoding নীচে দেখানো হয়েছে

    ফল্ট কোড সেল নির্বাচিত
  8. ফল্ট কোড protocol.http.UnsupportedEncoding সম্পর্কে তথ্য.http.UnsupportedEncoding নীচে দেখানো হয়েছে:

  9. আরও তথ্য দেখতে লগ দেখুন ক্লিক করুন এবং 415 ত্রুটির সাথে ব্যর্থ হওয়া অনুরোধগুলির একটি প্রসারিত করুন:

  10. লগ উইন্ডো থেকে, নিম্নলিখিত বিবরণ নোট করুন:
    • ফল্ট উত্স: এটি প্রদর্শন করে যে ত্রুটিটি apigee বা target দ্বারা ফেরত দেওয়া হয়েছে।
    • ফল্ট কোড: এটি protocol.http.UnsupportedEncoding সাথে মেলে।
  11. যদি ফল্ট সোর্সটি apigee হয়, তাহলে এটি নির্দেশ করে যে অনুরোধটিতে Content-Encoding শিরোনামে অসমর্থিত এনকোডিং রয়েছে।
  12. যদি ফল্ট সোর্স target হয় , তাহলে এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভারের প্রতিক্রিয়া Content-Encoding শিরোনামে অসমর্থিত এনকোডিং রয়েছে৷

ট্রেস টুল

ট্রেস টুল ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. ট্রেস সেশন সক্ষম করুন এবং হয়:
    • 415 Unsupported Media Type ত্রুটি হওয়ার জন্য অপেক্ষা করুন, বা৷
    • আপনি যদি সমস্যাটি পুনরুত্পাদন করতে পারেন, 415 Unsupported Media Type ত্রুটি পুনরুত্পাদন করতে API কল করুন।
  2. নিশ্চিত করুন যে সমস্ত FlowInfos দেখান সক্ষম করা আছে:

    বিকল্প ফলক দেখুন, সমস্ত ফ্লোইনফো দেখান
  3. ব্যর্থ অনুরোধগুলির একটি নির্বাচন করুন এবং ট্রেস পরীক্ষা করুন।
  4. ট্রেসের বিভিন্ন পর্যায়ে নেভিগেট করুন এবং কোথায় ব্যর্থতা ঘটেছে তা সনাক্ত করুন।
  5. নীচে দেখানো হিসাবে লক্ষ্য সার্ভার পর্বে অনুরোধ পাঠানোর পরে আপনি সাধারণত একটি প্রবাহে ত্রুটিটি খুঁজে পাবেন:

  6. ট্রেস থেকে ত্রুটির মান নোট করুন।

    উপরের নমুনা ট্রেসটি Unsupported Encoding "utf-8" হিসাবে ত্রুটি দেখায়। যেহেতু ব্যাকএন্ড সার্ভারে অনুরোধ পাঠানোর পরে Apigee দ্বারা ত্রুটিটি উত্থাপিত হয়েছে, এটি ইঙ্গিত করে যে ব্যাকএন্ড সার্ভার "utf-8" এর মান সহ প্রতিক্রিয়া শিরোনাম Content-Encoding পাঠিয়েছে, যা Apigee-এ সমর্থিত এনকোডিং নয়।

  7. ট্রেসে AX (Analytics Data Recorded) ফেজে নেভিগেট করুন এবং এটিতে ক্লিক করুন।
  8. ফেজ ডিটেইলস প্যানেলে ত্রুটি/প্রতিক্রিয়া শিরোনাম বিভাগে নীচে স্ক্রোল করুন এবং নীচে দেখানো হিসাবে X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান নির্ধারণ করুন:

  9. আপনি protocol.http.UnsupportedEncoding হিসাবে X-Apigee-fault-code এবং X-Apigee "utf-8" fault-source- এর মানগুলি দেখতে পাবেন target প্রতিক্রিয়া শিরোনামে ব্যাকএন্ড সার্ভার Content-Encoding

    প্রতিক্রিয়া শিরোনাম মান
    এক্স-অ্যাপিজি-ফল্ট-কোড protocol.http.UnsupportedEncoding
    এক্স-অ্যাপিজি-ফল্ট-উৎস target

  10. আপনি প্রক্সি চেইন ব্যবহার করছেন কিনা তা দেখতে পরীক্ষা করুন; অর্থাৎ, যদি টার্গেট সার্ভার/টার্গেট এন্ডপয়েন্ট Apigee-তে অন্য একটি প্রক্সি চালু করে।
    1. এটি নির্ধারণ করতে, লক্ষ্য সার্ভার পর্বে পাঠানো অনুরোধে ফিরে যান। কার্ল দেখান ক্লিক করুন।

    2. টার্গেট সার্ভারে পাঠানো অনুরোধের জন্য কার্ল উইন্ডোটি খোলে যেখান থেকে আপনি লক্ষ্য সার্ভার হোস্ট উপনাম নির্ধারণ করতে পারেন।
    3. যদি লক্ষ্য সার্ভার হোস্ট উপনাম একটি ভার্চুয়াল হোস্ট উপনাম নির্দেশ করে, তাহলে এটি প্রক্সি চেইনিং। এই ক্ষেত্রে, 415 Unsupported Media Type ত্রুটিটি আসলে কী ঘটছে তা নির্ধারণ না করা পর্যন্ত আপনাকে চেইনড প্রক্সির জন্য উপরের সমস্ত পদক্ষেপগুলি পুনরাবৃত্তি করতে হবে।
    4. যদি টার্গেট সার্ভার হোস্ট ওরফে আপনার ব্যাকএন্ড সার্ভারের দিকে নির্দেশ করে, তাহলে এটি নির্দেশ করে যে আপনার ব্যাকএন্ড সার্ভার অসমর্থিত এনকোডিং Apigee-তে পাঠাচ্ছে।

Nginix অ্যাক্সেস লগ

NGINX অ্যাক্সেস লগ ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. আপনি যদি একজন ব্যক্তিগত ক্লাউড ব্যবহারকারী হন, তাহলে আপনি HTTP 415 ত্রুটি সম্পর্কে মূল তথ্য নির্ধারণ করতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারেন।
  2. NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন:

    /opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log

  3. একটি নির্দিষ্ট সময়কালের (যদি সমস্যাটি অতীতে ঘটে থাকে) বা 415 সাথে কোনো অনুরোধ এখনও ব্যর্থ হয় তবে কোনো 415 ত্রুটির জন্য অনুসন্ধান করুন।
  4. আপনি যদি X-Apigee-fault-code-এর সাথে protocol.http.UnsupportedEncoding এর মানের সাথে 415 টি ত্রুটি খুঁজে পান, তাহলে X-Apigee-ফল্ট-সোর্সের মান নির্ধারণ করুন।

    NGINX অ্যাক্সেস লগ থেকে নমুনা 415 ত্রুটি:

    NGINX অ্যাক্সেস লগ থেকে উপরের নমুনা এন্ট্রিতে X- Apigee-fault-code এবং X-Apigee-fault-source এর জন্য নিম্নলিখিত মান রয়েছে:

    প্রতিক্রিয়া শিরোনাম মান
    এক্স-অ্যাপিজি-ফল্ট-কোড protocol.http.Response405WithoutAllowHeader
    এক্স-অ্যাপিজি-ফল্ট-উৎস MP

    X-Apigee-ফল্ট-উৎসও থাকতে পারে মান target

কারণ: অনুরোধে অসমর্থিত এনকোডিং

রোগ নির্ণয়

  1. এপিআই মনিটরিং বা এনজিআইএনএক্স অ্যাক্সেস লগ ব্যবহার করে দেখা ত্রুটির জন্য ফল্ট কোড এবং ফল্ট সোর্স নির্ণয় করুন যা সাধারণ নির্ণয়ের ধাপে ব্যাখ্যা করা হয়েছে।
  2. যদি ফল্ট কোডটি হয় protocol.http.UnsupportedEncoding এবং ফল্ট সোর্সের মান apigee বা MP থাকে, তাহলে এটি নির্দেশ করে যে ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা পাঠানো অনুরোধ অনুরোধ শিরোনাম Content-Encoding এ অসমর্থিত এনকোডিং রয়েছে।
  3. আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে HTTP অনুরোধের অংশ হিসাবে পাস করা অসমর্থিত এনকোডিংয়ের মান নির্ধারণ করতে পারেন:

    ত্রুটি বার্তা

    ত্রুটি বার্তা ব্যবহার করে:
    1. Apigee Edge থেকে প্রাপ্ত সম্পূর্ণ ত্রুটির বার্তায় আপনার অ্যাক্সেস থাকলে, faultstring পড়ুন। faultstring অসমর্থিত এন্ডকোডিংয়ের মান রয়েছে।

      নমুনা ত্রুটি বার্তা:

      "faultstring":"Unsupported Encoding \"UTF-8\""
    2. উপরের ত্রুটি বার্তায়, লক্ষ্য করুন যে অসমর্থিত এনকোডিংয়ের মান হল “UTF-8” যেমন faultstring -এ দেখা যায়।

      যেহেতু “UTF-8” Apigee এজ-এ একটি সমর্থিত এনকোডিং নয়, তাই এই অনুরোধটি ত্রুটি কোড সহ 415 Unsupported Media Type ত্রুটির সাথে ব্যর্থ হয়: protocol.http.UnsupportedEncoding

    প্রকৃত অনুরোধ

    প্রকৃত অনুরোধ ব্যবহার করে:
    1. ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা করা প্রকৃত অনুরোধে আপনার অ্যাক্সেস না থাকলে, রেজোলিউশনে যান।
    2. ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা তৈরি প্রকৃত অনুরোধে আপনার অ্যাক্সেস থাকলে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
      1. অনুরোধ শিরোনাম Content-Encoding.
      2. অনুরোধ শিরোনাম Content-Encoding এ পাস করা মান যদি সমর্থিত এনকোডিং- এ তালিকাভুক্ত মানগুলির একটি না হয়, তাহলে এটি এই ত্রুটির কারণ।

        নমুনা অনুরোধ:

        curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz

        উপরের নমুনা অনুরোধটি "UTF-8" মানটিকে Content- Encoding শিরোনামে পাঠায়, যা Apigee এজ-এ সমর্থিত এনকোডিং নয়। অতএব, এই অনুরোধটি ত্রুটি কোড সহ 415 Unsupported Media Type ত্রুটির সাথে ব্যর্থ হয়: protocol.http.UnsupportedEncoding .

রেজোলিউশন

  1. সমর্থিত এনকোডিং -এ Apigee দ্বারা সমর্থিত এনকোডিংয়ের তালিকা পড়ুন।
  2. নিশ্চিত করুন যে ক্লায়েন্ট অ্যাপ্লিকেশন সর্বদা নিম্নলিখিতগুলি পাঠায়:
    • অনুরোধে Content-Encoding হেডারের মান হিসাবে শুধুমাত্র সমর্থিত এনকোডিং
    • Apigee Edge-এ সমর্থিত ফরম্যাটে রিকোয়েস্ট পেলোড এবং Content-Encoding হেডারে উল্লেখ করা ফরম্যাটের সাথে মেলে
  3. উপরের উদাহরণে, অনুরোধ পেলোডে একটি gz এক্সটেনশন রয়েছে যা নির্দেশ করে যে বিষয়বস্তুটি অবশ্যই gzip হতে হবে। আপনি Content-Encoding: gzip এবং gzip ফর্ম্যাটে অনুরোধের পেলোড হিসাবে অনুরোধ শিরোনামটি পাঠিয়ে সমস্যাটি সমাধান করতে পারেন:

    curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
    

কারণ: প্রতিক্রিয়ায় অসমর্থিত এনকোডিং

রোগ নির্ণয়

  1. এপিআই মনিটরিং, ট্রেস টুল বা এনজিআইএনএক্স অ্যাক্সেস লগ ব্যবহার করে দেখা ত্রুটির জন্য ফল্ট কোড এবং ফল্ট উৎস নির্ণয় করুন যা সাধারণ নির্ণয়ের ধাপে ব্যাখ্যা করা হয়েছে।
  2. যদি ফল্ট সোর্সের মান target থাকে , তাহলে এটি নির্দেশ করে যে ব্যাকএন্ড সার্ভারের দ্বারা প্রেরিত প্রতিক্রিয়াটিতে Content-Encoding শিরোনামে অসমর্থিত এনকোডিং রয়েছে৷
  3. আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে ব্যাকএন্ড সার্ভার থেকে HTTP প্রতিক্রিয়ার অংশ হিসাবে পাস করা অসমর্থিত এনকোডিংয়ের মান নির্ধারণ করতে পারেন:

    ত্রুটি বার্তা

    ত্রুটি বার্তা ব্যবহার করে:
    1. Apigee Edge থেকে প্রাপ্ত সম্পূর্ণ ত্রুটির বার্তায় আপনার অ্যাক্সেস থাকলে, faultstring পড়ুন। faultstring অসমর্থিত এনকোডিংয়ের মান রয়েছে।

      নমুনা ত্রুটি বার্তা:

      "faultstring":"Unsupported Encoding \"UTF-8\""
    2. উপরের ত্রুটি বার্তায়, লক্ষ্য করুন যে অসমর্থিত এনকোডিংয়ের মান হল “UTF-8” যেমন faultstring -এ দেখা যায়।

      যেহেতু “UTF-8” Apigee এজ-এ একটি সমর্থিত এনকোডিং নয়, তাই এই অনুরোধটি ত্রুটি কোড সহ 415 Unsupported Media Type ত্রুটির সাথে ব্যর্থ হয়: protocol.http.UnsupportedEncoding

    ট্রেস টুল

    ট্রেস ব্যবহার করে:
    1. যদি আপনার কাছে ব্যর্থ অনুরোধের ট্রেস না থাকে, তাহলে রেজোলিউশনে যান।
    2. আপনি যদি ব্যর্থতার জন্য একটি ট্রেস ক্যাপচার করে থাকেন, তাহলে আপনি ট্রেস টুলে ব্যাখ্যা করা Content-Encoding প্রতিক্রিয়া শিরোনামের অংশ হিসাবে ব্যাকএন্ড সার্ভার দ্বারা পাস করা অসমর্থিত এনকোডিং নির্ধারণ করতে পারেন।

রেজোলিউশন

  1. সমর্থিত এনকোডিং -এ Apigee দ্বারা সমর্থিত এনকোডিংয়ের তালিকা পড়ুন
  2. নিশ্চিত করুন যে ব্যাকএন্ড সার্ভার সর্বদা নিম্নলিখিতগুলি পাঠায়:
    • অনুরোধে Content-Encoding হেডারের মান হিসাবে শুধুমাত্র সমর্থিত এনকোডিং
    • Apigee Edge-এ সমর্থিত বিন্যাসে রেসপন্স পেলোড এবং Content-Encoding হেডারে উল্লেখ করা ফরম্যাটের সাথে মেলে

সমর্থিত এনকোডিং

নিম্নলিখিত সারণী Apigee Edge দ্বারা সমর্থিত এনকোডিং বিন্যাস তালিকাভুক্ত করে:

হেডার এনকোডিং বর্ণনা
Content-Encoding gzip ইউনিক্স gzip ফরম্যাট
deflate এই বিন্যাসটি ডিফ্লেট কম্প্রেশন অ্যালগরিদম সহ zlib কাঠামো ব্যবহার করে।

স্পেসিফিকেশন

Apigee নিম্নলিখিত RFC স্পেসিফিকেশন অনুযায়ী 415 Unsupported Media Type ত্রুটির প্রতিক্রিয়ার সাথে প্রতিক্রিয়া জানায়:

স্পেসিফিকেশন
RFC 7231, বিভাগ 6.5.13: 415 অসমর্থিত মিডিয়া টাইপ

উল্লেখ্য মূল পয়েন্ট

নিম্নলিখিত নোট করুন:

  • API অনুরোধের অংশ হিসাবে Content-Encoding শিরোনামে পাস করা অসমর্থিত এনকোডিংয়ের কারণে Apigee দ্বারা 415 ত্রুটিটি ফেরত দেওয়া হলে:
    • আপনি এই ধরনের অনুরোধের জন্য ট্রেস ক্যাপচার করতে সক্ষম হবে না.
    • আপনি RaiseFault, AssignMessage এর মতো নীতিগুলি ব্যবহার করে Apigee Edge দ্বারা প্রেরিত ত্রুটি প্রতিক্রিয়ার বিন্যাস বা বিষয়বস্তু পরিবর্তন করতে সক্ষম হবেন না৷

    এর কারণ হল এই ত্রুটিটি মেসেজ প্রসেসরের প্রাথমিক পর্যায়ে কোনো নীতি কার্যকর করার আগে ঘটে।

  • যদি আপনার ব্যাকএন্ড সার্ভার থেকে প্রতিক্রিয়া শিরোনামে পাস করা অসমর্থিত এনকোডিংয়ের কারণে Apigee দ্বারা 415 ত্রুটিটি ফেরত দেওয়া হয়, তাহলে এই ত্রুটিটি এড়াতে এটিকে ব্যাকএন্ড সার্ভারে ঠিক করতে হবে । এই সমস্যা সমাধানের জন্য উপযুক্ত হিসাবে আপনার ব্যাকএন্ড দলের সাথে কাজ করুন.

আপনার যদি এখনও Apigee Edge Support থেকে কোনো সহায়তার প্রয়োজন হয়, তাহলে Must gather diagnostic information এ যান।

ডায়াগনস্টিক তথ্য সংগ্রহ করতে হবে

আপনার যদি এখনও Apigee সাপোর্ট থেকে কোনো সহায়তার প্রয়োজন হয়, তাহলে নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপর Apigee Edge সাপোর্টের সাথে যোগাযোগ করুন:

আপনি যদি একজন পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্য প্রদান করুন:

  • প্রতিষ্ঠানের নাম
  • পরিবেশের নাম
  • API প্রক্সি নাম
  • 415 ত্রুটি পুনরুত্পাদন করতে ব্যবহৃত সম্পূর্ণ curl কমান্ড
  • API অনুরোধের জন্য ট্রেস ফাইল

আপনি যদি একজন ব্যক্তিগত ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্য প্রদান করুন:

  • ব্যর্থ অনুরোধের জন্য পরিলক্ষিত সম্পূর্ণ ত্রুটি বার্তা
  • পরিবেশের নাম
  • API প্রক্সি বান্ডেল
  • API অনুরোধের জন্য ট্রেস ফাইল
  • NGINX অ্যাক্সেস লগ /opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log

    যেখানে: ORG , ENV এবং PORT# প্রকৃত মান দিয়ে প্রতিস্থাপিত হয়।

  • বার্তা প্রসেসর সিস্টেম লগ /opt/apigee/var/log/edge-message- processor/logs/system.log