400 ত্রুটিপূর্ণ অনুরোধ - DuplicateHeader

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

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

API কলের উত্তর হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশন 400 Bad Request HTTP স্ট্যাটাস কোড পায়, যার সাথে protocol.http.DuplicateHeader সমস্যা কোড থাকে।

সমস্যা সংক্রান্ত মেসেজ

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

HTTP/1.1 400 Bad Request

এছাড়াও, আপনি নিচে দেখানো মেসেজের মতো কোনও সমস্যার মেসেজ দেখতে পেতে পারেন:

{
   "fault":{
      "faultstring":"Duplicate Header \"Expires\"",
      "detail":{
         "errorcode":"protocol.http.DuplicateHeader"
      }
   }
}

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

Apigee Edge-এ ডুপ্লিকেট থাকতে পারে না এমন কোনও নির্দিষ্ট HTTP হেডার, ক্লায়েন্ট Apigee Edge-এ পাঠানো HTTP অনুরোধের অংশ হিসেবে একই বা আলাদা আলাদা ভ্যালু সহ একাধিকবার দেখা গেলে এই সমস্যা হয়।

RFC 7230, বিভাগ ৩.২.২: ফিল্ডের ক্রম, অনুযায়ী, প্রেরককে কোনও মেসেজে একই ফিল্ডের নাম সহ একাধিক হেডার ফিল্ড তৈরি করা চলবে না, যদি না সেই হেডার ফিল্ডের সম্পূর্ণ ভ্যালু কমা-সেপারেটেড তালিকা হিসেবে সংজ্ঞায়িত করা হয়, [যেমন, #(values)] অথবা হেডার ফিল্ড হল একটি সুপরিচিত ব্যতিক্রম। ক্লায়েন্টের পাঠানো HTTP অনুরোধে Apigee Edge যদি এমন কোনও নির্দিষ্ট হেডার খুঁজে পায়, যার ডুপ্লিকেট থাকার অনুমতি নেই এবং সেটি একাধিকবার আছে, তাহলে এটি 400 Bad Request এবং এরর কোড protocol.http.DuplicateHeader সহ উত্তর দেয়।

এই সমস্যার সম্ভাব্য কারণগুলি এখানে দেওয়া হল:

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

সাধারণ ডায়াগনসিস ধাপ

এই সমস্যা ডায়াগনসিস করতে নিম্নলিখিত টুল/টেকনিকের মধ্যে একটি ব্যবহার করুন:

API মনিটরিং

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

  1. Apigee Edge UI-তে সাইন-ইন করুন এমন ব্যবহারকারী হিসেবে যার উপযুক্ত ভূমিকা আছে।
  2. যে প্রতিষ্ঠানে সমস্যাটি তদন্ত করতে চান সেটিতে পরিবর্তন করুন।

  3. বিশ্লেষণ করুন > API মনিটরিং > তদন্ত করুন পৃষ্ঠায় নেভিগেট করুন।
  4. আপনি যে নির্দিষ্ট সময়সীমার মধ্যে সমস্যাটি লক্ষ্য করেছেন সেটি বেছে নিন।
  5. প্রক্সি ফিল্টার সব হিসেবে সেট করা আছে কিনা তা নিশ্চিত করুন।
  6. সময় অনুযায়ী সমস্যার কোড প্লট করুন।
  7. নিচে দেখানো protocol.http.DuplicateHeader ফল্ট কোড আছে এমন একটি সেল বেছে নিন:

  8. সমস্যার কোড protocol.http.DuplicateHeader সম্পর্কে তথ্য নিচে দেখানো উপায়ে দেখানো হয়:

  9. লগ দেখুন বিকল্পে ক্লিক করুন এবং ব্যর্থ অনুরোধের সারিটি বড় করে দেখুন।
  10. লগ উইন্ডো থেকে, নিম্নলিখিত বিবরণগুলি নোট করুন:
    1. স্ট্যাটাস কোড: 400
    2. সমস্যার সোর্স: apigee
    3. সমস্যার কোড: protocol.http.DuplicateHeader.
  11. সমস্যার সোর্স-এর ভ্যালু apigee বা MP হলে এবং সমস্যার কোড-এর ভ্যালু protocol.http.DuplicateHeader হলে, এর অর্থ হল ক্লায়েন্টের HTTP অনুরোধে ডুপ্লিকেট হেডার আছে।

ট্রেস টুল

NGINX

NGINX অ্যাক্সেস লগ ব্যবহার করে সমস্যার ডায়াগনসিস করতে:

  1. আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, HTTP 400 সমস্যা সম্পর্কে মূল তথ্য নির্ধারণ করতে আপনি NGINX অ্যাক্সেস লগ ব্যবহার করতে পারবেন।
  2. NGINX অ্যাক্সেস লগ চেক করুন:

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

    কোথায়: ORG, ENV এবং PORT#-এর জায়গায় আসল ভ্যালু বসাতে হবে।

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

    NGINX অ্যাক্সেস লগ থেকে 400 সমস্যার নমুনা:

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

    রেসপন্স হেডার ভ্যালু
    X-Apigee-fault-code protocol.http.DuplicateHeader
    X-Apigee-fault-source MP

কারণ: অনুরোধে ডুপ্লিকেট হেডার

ডায়াগনসিস

  1. API মনিটরিং বা NGINX অ্যাক্সেস লগ ব্যবহার করে দেখা সমস্যার জন্য সমস্যার কোড ও সমস্যার সোর্স নির্ধারণ করুন যা সাধারণ ডায়াগনসিস ধাপ-এ ব্যাখ্যা করা হয়েছে।
  2. Fault Source-এর মান apigee বা MP হলে, এর অর্থ হল ক্লায়েন্ট অ্যাপ্লিকেশন Apigee-তে যে অনুরোধ পাঠিয়েছে তাতে ডুপ্লিকেট হেডার আছে।
  3. আপনি নিম্নলিখিত পদ্ধতির মধ্যে একটি ব্যবহার করে অনুরোধের অংশ হিসেবে একাধিকবার পাঠানো প্রকৃত হেডার নির্ধারণ করতে পারবেন:

    সমস্যা সংক্রান্ত মেসেজ

    সমস্যার মেসেজ ব্যবহার করা

    1. Apigee Edge থেকে পাওয়া সম্পূর্ণ সমস্যার মেসেজে আপনার অ্যাক্সেস থাকলে, তাহলে faultstring দেখুন। faultstring-এ একাধিকবার পাঠানো হয়েছে এমন হেডারের নাম রয়েছে।

      সমস্যার মেসেজের নমুনা:

      "faultstring":"Duplicate Header \"Expires\""
    2. উপরের সমস্যার মেসেজে, আপনি দেখতে পাবেন যে হেডার Expires হল faultstring-এ দেখা গেছে যে এটি একাধিকবার পাঠানো হয়েছে।

    আসল অনুরোধ

    আসল অনুরোধ ব্যবহার করে

    1. ক্লায়েন্ট অ্যাপ্লিকেশনের করা আসল অনুরোধে আপনার অ্যাক্সেস থাকলে, তাহলে নিচের ধাপগুলি অনুসরণ করুন:

      1. অনুরোধে পাস করা হেডারগুলির তালিকা যাচাই করুন।
      2. আপনি যদি দেখেন যে কোনও নির্দিষ্ট হেডার একই মান বা আলাদা আলাদা মান সহ অনুরোধে একাধিকবার দেখা যাচ্ছে , তাহলে এটিই হল এই সমস্যার কারণ।

      স্যাম্পেল অনুরোধ:

      curl https://HOST_ALIAS/duplicateheadertest -v -H "Expires: Mon, 21 June 2021 07:28:00 GMT" -H "Expires: Mon, 21 June 2021 07:28:00 GMT"
      

      উপরের উদাহরণে দেখানো অনুরোধে, হেডার Expires একাধিকবার পাঠানো হয়েছে। তাই, এই অনুরোধটি 400 Bad Request সমস্যার সাথে ব্যর্থ হয় এবং সমস্যার কোড: protocol.http.DuplicateHeader.

    2. অথবা, আপনার কাছে ক্লায়েন্ট লগ অ্যাক্সেস করার সুবিধা থাকলে, আপনি দেখতে পাবেন যে আপনার কাছে Apigee Edge-এ করা আসল অনুরোধের তথ্য আছে কিনা এবং সেই হেডার নির্ধারণ করতে পারবেন যা একাধিকবার পাঠানো হয়েছে।

রেজোলিউশন

ডুপ্লিকেট কন্টেন্ট সংক্রান্ত সমস্যার সমাধান করা

বিকল্প #১ [সাজেস্ট করা বিকল্প] ডুপ্লিকেট হেডার অন্তর্ভুক্ত না করার জন্য ক্লায়েন্ট অ্যাপ্লিকেশন ঠিক করুন

  1. কোনও নির্দিষ্ট ক্লায়েন্ট ডুপ্লিকেট হেডার পাঠানোর কারণ বিশ্লেষণ করুন। যেমন, উপরের ক্ষেত্রে Expires। API প্রক্সি ডুপ্লিকেট হেডার গ্রহণ করতে পারে কিনা তা যাচাই করুন। সাধারণত, HTTP স্পেসিফিকেশন RFC7230 অনুযায়ী এটি কাম্য নয়।
  2. এটি অবাঞ্ছিত হলে, ডুপ্লিকেট হেডার না পাঠানোর জন্য আপনার ক্লায়েন্ট অ্যাপ্লিকেশন পরিবর্তন করুন।

    উপরে আলোচনা করা উদাহরণে, এটি লক্ষ্য করা গেছে যে হেডার Expires একই মান সহ দুবার পাঠানো হয়েছে, যা কাম্য নয়। আপনি নিচে দেখানো পদ্ধতিতে Expires হেডার একবার পাস করে এই সমস্যার সমাধান করতে পারেন:

    curl https://HOST_ALIAS/duplicateheadertest -v -H "Expires: Mon, 21 June 2021 07:28:00 GMT"
    
  3. এটি কাঙ্ক্ষিত হলে এবং আপনি ডুপ্লিকেট হেডারকে অনুমতি দিতে চাইলে, বিকল্প #২ CwC প্রপার্টি ব্যবহার করা বিকল্পে যান।

CwC

বিকল্প #২ CwC প্রপার্টি ব্যবহার করা

Apigee একটি CwC প্রপার্টি প্রদান করে HTTPHeader.<HeaderName> ,যা ক্লায়েন্ট অ্যাপ্লিকেশন এবং টার্গেট সার্ভারকে Apigee Edge-এ API প্রক্সি সার্ভারে ডুপ্লিকেট হেডার পাঠাতে দেয়।

CwC প্রপার্টি ভ্যালু
HTTPHeader.<HeaderName> allowDuplicates,multivalued

যেমন, মেসেজ প্রসেসরে নিম্নলিখিত প্রপার্টি সেট করা যেতে পারে যাতে ডুপ্লিকেট এবং হেডার Expires-এর একাধিক ভ্যালু অনুমোদিত হয়।

HTTPHeader.Expires=allowDuplicates, multiValued
  1. আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, 400 Bad Request সমস্যা এড়াতে প্রপার্টি কনফিগার করতে পারবেন, এমনকি অনুরোধে ডুপ্লিকেট হেডার থাকলেও। এর জন্য, ডুপ্লিকেট হেডার ব্যবহার করার জন্য মেসেজ প্রসেসর কনফিগার করা সংক্রান্ত নির্দেশাবলী দেখুন।
  2. আপনি পাবলিক ক্লাউড ব্যবহারকারী হলে, আপনার প্রতিষ্ঠানের জন্য এই প্রপার্টি কনফিগার করতে Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন ।

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

Apigee আশা করে যে ক্লায়েন্ট অ্যাপ্লিকেশনটি অনুরোধের অংশ হিসেবে ডুপ্লিকেট হেডার পাঠাবে না নিম্নলিখিত RFC স্পেসিফিকেশন অনুসারে:

স্পেসিফিকেশন
RFC 7230, section 3.2.2: Field Order
RFC 7230, section 3.2 Header Fields

Apigee সহায়তা টিমের থেকে এখনও কোনও সাহায্যের প্রয়োজন হলে, রোগ নির্ণয় সংক্রান্ত তথ্য অবশ্যই সংগ্রহ করুন।

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

নিচে উল্লেখ করা ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপর Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন।

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

  • সংস্থার নাম
  • পরিবেশের নাম
  • API প্রক্সির নাম
  • 400 সমস্যাটি আবার তৈরি করতে curl কমান্ড সম্পূর্ণ করুন
  • API অনুরোধের জন্য ট্রেস ফাইল

আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, নিম্নলিখিত তথ্য দিন:

  • অনুরোধ সম্পূর্ণ না হওয়ার ক্ষেত্রে দেখা সম্পূর্ণ সমস্যার মেসেজ
  • পরিবেশের নাম
  • API প্রক্সি বান্ডেল
  • 400 সমস্যাটি আবার তৈরি করতে আপনি যে curl কমান্ড ব্যবহার করেছেন সেটি সম্পূর্ণ করুন
  • 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