JSON থ্রেট প্রোটেকশন রানটাইম সংক্রান্ত সমস্যার সমাধান করা

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

ExecutionFailed

সমস্যার কোড

steps.jsonthreatprotection.ExecutionFailed

সমস্যার উত্তরের বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]: error_description
          at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

সমস্যার ধরন ও সম্ভাব্য কারণ

JSONThreatProtection নীতি বিভিন্ন ধরনের ExecutionFailed সমস্যা দেখাতে পারে। নিচের সারণীতে বিভিন্ন ধরনের সমস্যা ও তার সম্ভাব্য কারণের তালিকা দেওয়া হল:

সমস্যার ধরন কারণ
অবজেক্ট এন্ট্রি নামের দৈর্ঘ্য সীমা অতিক্রম করেছে কোনও অবজেক্টের এন্ট্রি নামের জন্য অনুমোদিত স্ট্রিংয়ের সর্বাধিক দৈর্ঘ্য অতিক্রম করা হয়েছে।
অবজেক্ট এন্ট্রি সংখ্যা অতিক্রম করেছে কোনও অবজেক্টে অনুমোদিত এন্ট্রির সর্বাধিক সংখ্যা ছাড়িয়ে গেছে।
অ্যারে এলিমেন্টের সংখ্যা অতিক্রম করেছে অ্যারেতে অনুমোদিত সর্বাধিক সংখ্যক এলিমেন্ট অতিক্রম করা হয়েছে।
কন্টেনারের গভীরতা অতিক্রম করা নেস্ট করা সর্বাধিক অনুমোদিত গভীরতা অতিক্রম করা হয়েছে।
স্ট্রিং ভ্যালুর দৈর্ঘ্য অনুমোদিত সীমার বেশি স্ট্রিং ভ্যালুর জন্য অনুমোদিত সর্বাধিক দৈর্ঘ্য অতিক্রম করেছে।
ভুল JSON অবজেক্ট ইনপুট JSON পেলোড সঠিক নয়।

অবজেক্ট এন্ট্রি নামের দৈর্ঘ্য সর্বাধিক সীমা ছাড়িয়ে গেছে

সমস্যার উত্তরের বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded object entry name length at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

সমস্যার উত্তর বডির উদাহরণ

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded object entry name length at line 2",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

কারণ

<Source> এলিমেন্ট দ্বারা নির্দিষ্ট করা ইনপুট মেসেজ পেলোডে যদি এমন কোনও JSON অবজেক্ট থাকে যার প্রপার্টির নাম <ObjectEntryNameLength> এলিমেন্টে নির্দিষ্ট করা সর্বাধিক দৈর্ঘ্য অতিক্রম করে যায়, তাহলে এই সমস্যাটি হয়।

যেমন, যদি <ObjectEntryNameLength> এলিমেন্টকে নীতিতে ৫ হিসেবে নির্দিষ্ট করা হয়, কিন্তু ইনপুট মেসেজ পেলোডের এমন একটি JSON প্রপার্টি থাকে যার নাম ৫টি অক্ষরের বেশি, তাহলে এই সমস্যাটি দেখানো হয়।

ডায়াগনসিস

  1. JSONThreatProtection নীতির নাম এবং যে লাইন নম্বরে দীর্ঘ এন্ট্রি নাম আছে তা শনাক্ত করতে সমস্যার মেসেজটি পরীক্ষা করুন। যেমন, নিম্নলিখিত সমস্যার মেসেজে, JSONThreatProtection নীতির নাম হল JSON-Threat-Protection-1 এবং পেলোডের লাইন নম্বর হল ২।

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    
  2. ধাপ ১-এ আপনি যে নীতি শনাক্ত করেছেন সেটি পরীক্ষা করুন এবং <ObjectEntryNameLength> এলিমেন্টে উল্লেখ করা ভ্যালু নোট করুন।

    যেমন, নিম্নলিখিত JSONThreatProtection নীতিতে, <ObjectEntryNameLength>-এর মান 5 হিসেবে সেট করা আছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>5</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ ১-এ শনাক্ত করা হয়েছে) পরীক্ষা করুন এবং অবজেক্টের নামের দৈর্ঘ্য <ObjectEntryNameLength> এলিমেন্টে (ধাপ ২-এ শনাক্ত করা হয়েছে) উল্লেখ করা ভ্যালুর থেকে বেশি কিনা তা চেক করুন। অবজেক্টের নামের দৈর্ঘ্য সেই সংখ্যাটি অতিক্রম করলে, এটিই হল সমস্যার কারণ।

    ইনপুট পেলোডের একটি উদাহরণ এখানে দেওয়া হল:

    {
       "number" : 500,
       "string" : "text"
    }
    

    উপরে দেখানো JSON পেলোডের ২ নম্বর লাইনে number নামের একটি প্রপার্টি আছে যার ৬টি অক্ষর আছে (নামের দৈর্ঘ্য ৬)। যেহেতু অবজেক্টের নামের দৈর্ঘ্য ৫-এর থেকে বেশি (<ObjectEntryNameLength> এলিমেন্টের জন্য নির্দিষ্ট করা ভ্যালু), তাই আপনি নিম্নলিখিত সমস্যাটি দেখতে পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    

রেজোলিউশন

JSONThreatProtection নীতি যদি এমন পে-লোড থেকে রক্ষা করার জন্য তৈরি করা হয়ে থাকে, যেগুলির অবজেক্ট এন্ট্রি নামের মান আগে থেকে নির্দিষ্ট করা মানের থেকে বেশি, তাহলে এরর মেসেজটি প্রত্যাশিত। এই ক্ষেত্রে, আর কোনও ব্যবস্থা নেওয়ার প্রয়োজন নেই।

তবে, আপনি যদি নির্ধারণ করেন যে পে-লোডে আরও বড় অবজেক্ট এন্ট্রি নাম নির্দিষ্ট করা যেতে পারে এবং এর ফলে কোনও সমস্যা হবে না, তাহলে আপনার প্রয়োজনীয়তার উপর ভিত্তি করে <ObjectEntryNameLength>-এর মান পরিবর্তন করুন।

যেমন, আপনি যদি মনে করেন যে ১০টি অক্ষর পর্যন্ত অবজেক্টের নাম অনুমোদন করতে পারবেন, তাহলে JSONThreatProtection নীতিটি নিম্নলিখিতভাবে পরিবর্তন করুন:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>10</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

অবজেক্ট এন্ট্রি সংখ্যা সর্বাধিক সীমা ছাড়িয়ে গেছে

সমস্যার উত্তরের বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded object entry count at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

সমস্যার উত্তর বডির উদাহরণ

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded object entry count at line 7",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

কারণ

<Source> এলিমেন্ট দ্বারা নির্দিষ্ট করা ইনপুট মেসেজ পেলোডে যদি এমন JSON অবজেক্ট থাকে যাতে নীতির <ObjectEntryCount> এলিমেন্টে নির্দিষ্ট করা ভ্যালুর থেকে বেশি এন্ট্রি (প্রপার্টি) থাকে, তাহলে এই সমস্যাটি হয়।

যেমন, <ObjectEntryCount>এলিমেন্ট ৫ হলে, কিন্তু ইনপুট JSON পেলোডে ৫টির বেশি এন্ট্রি থাকলে, এই সমস্যাটি দেখানো হয়।

ডায়াগনসিস

  1. JSONThreatProtection নীতির নাম এবং এন্ট্রি সংখ্যা যেখানে অতিক্রম করেছে সেই লাইন নম্বর শনাক্ত করতে সমস্যার মেসেজটি পরীক্ষা করুন। যেমন, নিম্নলিখিত সমস্যার মেসেজে, নীতির নাম হল JSON-Threat-Protection-1 এবং পেলোডের লাইন নম্বর হল 7:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count
    at line 7
    
  2. নীতির <ObjectEntryCount> এলিমেন্টে (ধাপ ১-এ শনাক্ত করা) উল্লেখ করা ভ্যালু নোট করে রাখুন।

    নিচে দেওয়া নীতির উদাহরণে, <ObjectEntryCount>-এর মান 5 হিসেবে সেট করা হয়েছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ ১-এ শনাক্ত করা হয়েছে) পরীক্ষা করুন এবং পেলোডের এন্টিটির সংখ্যা <ObjectEntryCount> এলিমেন্টের (ধাপ ২-এ শনাক্ত করা হয়েছে) জন্য নির্দিষ্ট করা ভ্যালুর থেকে বেশি কিনা তা চেক করুন। অবজেক্টের সংখ্যা, অবজেক্ট এন্ট্রি সংখ্যার থেকে বেশি হলে, সেটিই হল সমস্যার কারণ।

    ইনপুট পেলোডের একটি উদাহরণ এখানে দেওয়া হল:

    {
    "name" : "John",
    "id" : 234687,
    "age" : 31,
    "city" : "New York",
    "country" : "USA",
    "company" : "Google"
    }
    

    উপরে দেখানো JSON পেলোডে, ৬ষ্ঠ এন্ট্রি #৭ লাইনে (কোম্পানি) আছে। ইনপুট JSON পেলোডে অবজেক্ট এন্ট্রির সংখ্যা ৫-এর থেকে বেশি হওয়ায় (<ObjectEntryCount> এলিমেন্টের জন্য নির্দিষ্ট করা ভ্যালু) আপনি নিম্নলিখিত সমস্যাটি দেখতে পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at
    line 7
    

রেজোলিউশন

JSONThreatProtection নীতি যদি এমন পে-লোড থেকে রক্ষা করার জন্য তৈরি করা হয়ে থাকে, যেখানে অবজেক্ট এন্ট্রির সংখ্যা একটি নির্দিষ্ট থ্রেশহোল্ডের থেকে বেশি, তাহলে সমস্যার মেসেজটি প্রত্যাশিত। এই ক্ষেত্রে, আপনাকে কোনও অতিরিক্ত ব্যবস্থা নিতে হবে না।

তবে, আপনি যদি নির্ধারণ করেন যে কোনও পরিণতি ছাড়াই পে-লোডে আরও অবজেক্ট এন্ট্রি অন্তর্ভুক্ত করা যেতে পারে, তাহলে আপনার প্রয়োজনীয়তার উপর ভিত্তি করে <ObjectEntryCount>-কে উপযুক্ত মানতে পরিবর্তন করুন।

যেমন, আপনি যদি মনে করেন যে আপনি সর্বাধিক ১০টি অবজেক্ট এন্ট্রি অনুমোদন করতে পারবেন, তাহলে JSONThreatProtection নীতিটি নিম্নলিখিতভাবে পরিবর্তন করুন:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>10</ObjectEntryCount>
    <ObjectEntryNameLength>6</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

অ্যারে এলিমেন্টের সংখ্যা সর্বাধিক সীমা ছাড়িয়ে গেছে

সমস্যার উত্তরের বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded array element count at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

সমস্যার উত্তর বডির উদাহরণ

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded array element count at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

কারণ

<Source> এলিমেন্ট দ্বারা নির্দিষ্ট করা ইনপুট মেসেজ পেলোডে যদি এমন JSON অ্যারে থাকে যাতে নীতির <ArrayElementCount> এলিমেন্টে নির্দিষ্ট করা সংখ্যার চেয়ে বেশি সংখ্যক এলিমেন্ট থাকে, তাহলে এই সমস্যাটি হয়।

যেমন, <ArrayElementCount> এলিমেন্টকে 3 হিসেবে নির্দিষ্ট করা হলে, কিন্তু ইনপুট পেলোডে ৩টির বেশি এলিমেন্ট সহ JSON অ্যারে থাকলে, এই সমস্যাটি হয়।

ডায়াগনসিস

  1. নীতি ও লাইন নম্বর শনাক্ত করতে সমস্যার মেসেজ পরীক্ষা করুন যেখানে অ্যারের দৈর্ঘ্য অতিক্রম করা হয়েছে। যেমন, নিম্নলিখিত সমস্যার মেসেজে, নীতির নাম হল JSON-Threat-Protection-1 এবং পেলোডের লাইন নম্বর হল 3:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
    
  2. <ArrayElementCount> এলিমেন্টের (ধাপ ১-এ শনাক্ত করা) জন্য নির্দিষ্ট করা ভ্যালু নোট করে রাখুন।

    নিম্নলিখিত JSONThreatProtection নীতি সংক্রান্ত উদাহরণে, <ArrayElementCount>-এর মান 3 হিসেবে সেট করা হয়েছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ ১-এ শনাক্ত করা হয়েছে) পরীক্ষা করুন এবং সেখানে উল্লেখ করা অ্যারেতে <ArrayElementCount> এলিমেন্টে (ধাপ ২-এ শনাক্ত করা হয়েছে) উল্লেখ করা সংখ্যার চেয়ে বেশি সংখ্যা আছে কিনা তা চেক করুন। অ্যারে এলিমেন্টের সংখ্যা যদি গণনার থেকে বেশি হয়, তাহলে সেটিই হল সমস্যার কারণ।

    ইনপুট পেলোডের একটি উদাহরণ এখানে দেওয়া হল:

    {
     "name":"Ford",
     "models":[
        "Mustang",
        "Endeavour",
        "Fiesta",
        "EcoSport",
        "Focus"
     ]
    }
    

    উপরে দেখানো JSON পেলোডে models নামের অ্যারেতে ৫টি এলিমেন্ট আছে যা ৩ নম্বর লাইনে আছে। অ্যারে এলিমেন্টের সংখ্যা ৩-এর থেকে বেশি (<ArrayElementCount> এলিমেন্টের জন্য নির্দিষ্ট করা ভ্যালু ) হওয়ার কারণে আপনি নিম্নলিখিত সমস্যাটি দেখতে পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count
    at line 3
    

রেজোলিউশন

JSONThreatProtection নীতি যদি নির্দিষ্ট অ্যারে সংখ্যা থ্রেশহোল্ড সহ পেলোড থেকে রক্ষা করার জন্য তৈরি করা হয়ে থাকে, তাহলে সমস্যার মেসেজটি প্রত্যাশিত। এই ক্ষেত্রে, আর কোনও অতিরিক্ত পদক্ষেপ নেওয়ার প্রয়োজন নেই।

তবে, আপনি যদি নির্ধারণ করেন যে অ্যারেতে আরও বেশি সংখ্যক এলিমেন্টকে অনুমতি দেওয়া যেতে পারে, তাহলে আপনার প্রয়োজনীয়তার উপর ভিত্তি করে <ArrayElementCount>-কে উপযুক্ত ভ্যালুতে পরিবর্তন করুন।

যেমন, আপনি যদি মনে করেন যে আপনি সর্বাধিক ৫টি অ্যারে এলিমেন্ট অনুমোদন করতে পারবেন, তাহলে নিম্নলিখিতভাবে নীতিটি পরিবর্তন করুন:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>5</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>6</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

কন্টেনারের গভীরতা অতিক্রম করে গেছে

সমস্যার উত্তরের বডি

রানটাইম ট্রাফিক নিম্নলিখিত সমস্যা সহ 500 রেসপন্স কোড রিটার্ন করে:

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded container depth at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

সমস্যার উত্তর বডির উদাহরণ

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded container depth at line 5",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

কারণ

<Source> এলিমেন্ট দ্বারা নির্দিষ্ট করা ইনপুট মেসেজ পেলোডে এমন JSON অবজেক্ট থাকলে এই সমস্যা হয়, যেটিতে এমন JSON এলিমেন্ট থাকে যার কন্টেনার ডেপথ, নীতির <ContainerDepth> এলিমেন্টে নির্দিষ্ট করা সর্বাধিক কন্টেনার ডেপথের থেকে বেশি হয়। JSON এলিমেন্টের জন্য কন্টেনারের গভীরতা হল সর্বাধিক অনুমোদিত নেস্টেড গভীরতা। যেমন, কোনও অবজেক্ট থাকা একটি অ্যারে, যে অবজেক্টের মধ্যে আরেকটি অবজেক্ট আছে, তার ফলে কন্টেনমেন্ট ডেপথ ৩ হবে।

যেমন, <ContainerDepth> এলিমেন্টটি 3 হলে, কিন্তু ইনপুট পেলোডের কন্টেনার ডেপথ এই সীমা অতিক্রম করলে, এই সমস্যাটি দেখানো হয়।

ডায়াগনসিস

  1. JSONThreatProtection নীতির নাম এবং কন্টেনার ডেপথ যেখানে অতিক্রম করা হয়েছে সেই লাইন নম্বর শনাক্ত করতে, সমস্যার মেসেজটি পরীক্ষা করুন। যেমন, নিচে দেখানো সমস্যার মেসেজে, নীতির নাম হল JSON-Threat-Protection-1 এবং পেলোডের লাইন নম্বর হল 5.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    
  2. <ContainerDepth> এলিমেন্টের (ধাপ ১-এ শনাক্ত করা) জন্য নির্দিষ্ট করা ভ্যালু নোট করে রাখুন।

    নিম্নলিখিত JSONThreatProtection নীতি সংক্রান্ত উদাহরণে, <ContainerDepth>-এর মান 5 হিসেবে সেট করা হয়েছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ ১-এ শনাক্ত করা হয়েছে) পরীক্ষা করুন এবং পেলোডের কন্টেনার ডেপথ <ContainerDepth> এলিমেন্টে (ধাপ ২-এ শনাক্ত করা হয়েছে) উল্লেখ করা ভ্যালুর চেয়ে বেশি কিনা তা চেক করুন। কন্টেনারের গভীরতা যদি সংখ্যার থেকে বেশি হয়, তাহলে সেটিই হল সমস্যার কারণ।

    ইনপুট পেলোডের একটি উদাহরণ এখানে দেওয়া হল:

    {
     "ContainerDepth2":[ {
           "ContainerDepth4":[
              {
                 "ContainerDepth6":[
                    "1",
                    "2"
                 ]
              }
           ]
        }
     ]
    }
    

    উপরে দেখানো JSON পেলোডের ৫ নম্বর লাইনে ৬-এর কন্টেনার ডেপথ আছে। যেহেতু depth ৫-এর থেকে বেশি, তাই JSONThreatProtection নীতির <ContainerDepth> এলিমেন্টের জন্য নির্দিষ্ট করা ভ্যালু থেকে আপনি নিম্নলিখিত সমস্যা পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    

রেজোলিউশন

JSONThreatProtection নীতি যদি কন্টেনারের গভীরতা নির্দিষ্ট ভ্যালুর চেয়ে বেশি হলে পে-লোড থেকে রক্ষা করার জন্য তৈরি করা হয়ে থাকে, তাহলে এই সমস্যার মেসেজটি পাওয়ার কথা। এই ক্ষেত্রে, আর কোনও অতিরিক্ত পদক্ষেপ নেওয়ার প্রয়োজন নেই।

তবে, আপনি যদি মনে করেন যে আরও বেশি কন্টেনার ডেপথ গ্রহণযোগ্য, তাহলে আপনার প্রয়োজন অনুযায়ী <ContainerDepth>-এর মান পরিবর্তন করুন।

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>10</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

স্ট্রিং ভ্যালুর দৈর্ঘ্য অতিক্রম করেছে

সমস্যার উত্তরের বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded string value length at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

সমস্যার উত্তর বডির উদাহরণ

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded string value length at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

কারণ

<Source> এলিমেন্ট দ্বারা নির্দিষ্ট করা ইনপুট মেসেজ পেলোডে যদি এমন JSON এলিমেন্ট থাকে যার ভ্যালুতে <StringValueLength> এলিমেন্ট দ্বারা অনুমোদিত অক্ষরের চেয়ে বেশি অক্ষর থাকে, তাহলে এই সমস্যাটি হয়।

যেমন, যদি নীতিতে <StringValueLength> এলিমেন্ট 50 হিসেবে সেট করা থাকে, কিন্তু ইনপুট পেলোডের এক বা একাধিক এলিমেন্টের ভ্যালুতে ৫০টির বেশি অক্ষর থাকে, তাহলে এই সমস্যাটি দেখানো হয়।

ডায়াগনসিস

  1. নীতি ও লাইন নম্বর শনাক্ত করতে সমস্যার মেসেজ পরীক্ষা করুন যেখানে স্ট্রিংয়ের দৈর্ঘ্য অতিক্রম করা হয়েছে। নিচের উদাহরণে নীতির নাম হল JSON-Threat-Protection-1 andপে-লোডে লাইন 3।

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
    
  2. (ধাপ ১-এ শনাক্ত করা) <StringValueLength> এলিমেন্টের জন্য নির্দিষ্ট করা ভ্যালু নোট করে রাখুন।

    নিম্নলিখিত JSONThreatProtection নীতি সংক্রান্ত উদাহরণে, <StringValueLength>-এর মান 50 হিসেবে সেট করা হয়েছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ ১-এ শনাক্ত করা হয়েছে) পরীক্ষা করুন এবং <StringValueLength> এলিমেন্টের (ধাপ ২-এ শনাক্ত করা হয়েছে) জন্য নির্দিষ্ট করা অক্ষরের সংখ্যার চেয়ে ভ্যালুর দৈর্ঘ্য বেশি কিনা তা চেক করুন। ভ্যালুর দৈর্ঘ্য সীমা অতিক্রম করলে, সেটিই সমস্যার কারণ।

    ইনপুট পেলোডের একটি উদাহরণ এখানে দেওয়া হল:

    {
      "Country": "New Zealand",
      "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu"
    }
    

    উপরে দেখানো JSON পেলোডে Place Name নামের একটি অবজেক্ট আছে যার ভ্যালু Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu লাইন ৩-এ ৮৫টি অক্ষর আছে। যেহেতু ভ্যালুর দৈর্ঘ্য ৫০-এর চেয়ে বেশি, তাই <StringValueLength> এলিমেন্টে উল্লেখ করা ভ্যালু, আপনি নিম্নলিখিত সমস্যাটি পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length
    at line 3
    

রেজোলিউশন

JSONThreatProtection নীতি যদি এমন পে-লোড থেকে রক্ষা করার জন্য তৈরি করা হয়ে থাকে যার ভ্যালু একটি নির্দিষ্ট স্ট্রিংয়ের দৈর্ঘ্য অতিক্রম করে, তাহলে এরর মেসেজটি প্রত্যাশিত। এই ক্ষেত্রে, আর কোনও অতিরিক্ত পদক্ষেপ নেওয়ার প্রয়োজন নেই।

তবে, আপনি যদি নির্ধারণ করেন যে পেলোডে আরও বেশি দৈর্ঘ্যের মান নির্দিষ্ট করা যেতে পারে, তাহলে আপনার প্রয়োজনীয়তার উপর ভিত্তি করে <StringValueLength>-কে উপযুক্ত মানে পরিবর্তন করুন।

যেমন, আপনি যদি মনে করেন যে আপনি ৯০ পর্যন্ত দৈর্ঘ্যের একটি মান অনুমোদন করতে পারবেন, তাহলে নিম্নলিখিতভাবে নীতিটি পরিবর্তন করুন:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>90</StringValueLength>
</JSONThreatProtection>

সঠিক JSON অবজেক্ট নয়

সমস্যার উত্তরের বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: string: at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

সমস্যার উত্তর বডির উদাহরণ

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: Expecting : at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

কারণ

JSONThreatProtection নীতিতে <Source> এলিমেন্ট দ্বারা নির্দিষ্ট করা ইনপুট মেসেজ পেলোড সঠিক JSON অবজেক্ট না হলে এই সমস্যা হয়।

ডায়াগনসিস

  1. নীতি ও লাইন নম্বর শনাক্ত করতে, যেখানে সমস্যা হয়েছে, সেই সমস্যার মেসেজ পরীক্ষা করুন। নিচের উদাহরণে নীতির নাম হল JSON-Threat-Protection-1 andপে-লোডে লাইন 2।

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ ১-এ শনাক্ত করা হয়েছে) পরীক্ষা করুন এবং পেলোডের মধ্যে যে JSON অবজেক্ট পাস করা হয়েছে সেটি সত্যিই সঠিক JSON অবজেক্ট কিনা তা চেক করুন।

    ইনপুট পেলোডের একটি উদাহরণ এখানে দেওয়া হল:

    {
      "Longitude": 6.11499,
      "Latitude"  50.76891
    }
    

    উপরে দেখানো JSON পেলোডে, ৩ নম্বর লাইনে ":" (কোলন) নেই। এটি সঠিক JSON অবজেক্ট না হওয়ায়, আপনি এই সমস্যাটি দেখতে পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    Expecting : at line 3
    

রেজোলিউশন

JSONThreatProtection নীতি অন্তর্ভুক্ত আছে এমন যেকোনও API প্রক্সিতে সঠিক JSON পেলোড ইনপুট পাস করা হয়েছে কিনা তা নিশ্চিত করুন।

উপরে বর্ণিত উদাহরণ অনুযায়ী, JSON পেলোডকে নিম্নলিখিতভাবে পরিবর্তন করুন:

{
    "Longitude": 6.11499,
  "Latitude" : 50.76891
}

SourceUnavailable

সমস্যার কোড

steps.jsonthreatprotection.SourceUnavailable

সমস্যার উত্তরের বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]::
          Source[var_name] is not available"
        "detail": {
            "errorcode": "steps.jsonthreatprotection.SourceUnavailable"
        }
    }
}

সমস্যার উত্তর বডির উদাহরণ

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
          Source requests is not available",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.SourceUnavailable"
        }
    }
}

কারণ

JSONThreatProtection নীতির <Source> এলিমেন্টে নির্দিষ্ট করা message ভেরিয়েবল যদি এগুলির মধ্যে কোনও একটি হয়, তাহলে এই সমস্যাটি হয়:

  • স্কোপের বাইরে (যে নির্দিষ্ট ফ্লোতে নীতি প্রয়োগ করা হচ্ছে সেখানে উপলভ্য নয়)
  • request, response বা message-এর মধ্যে কোনও একটি সঠিক ভ্যালু নয়

যেমন, এই সমস্যাটি তখনই হয় যখন নীতির <Source> এলিমেন্টটি এমন কোনও ভেরিয়েবলে সেট করা থাকে যা সেই ফ্লোতে নেই যেখানে নীতিটি এক্সিকিউট করা হয়।

ডায়াগনসিস

  1. সমস্যার মেসেজ থেকে নীতির নাম ও সোর্স ভেরিয়েবলের নাম শনাক্ত করুন। যেমন, নিম্নলিখিত ত্রুটি মেসেজে, নীতির নাম হল JSON-Threat-Protection-1 এবং সোর্স ভেরিয়েবল হল requests:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    
  2. ধাপ ১-এ শনাক্ত করা <Source> এলিমেন্টের জন্য নির্দিষ্ট করা ভ্যালু পরীক্ষা করুন।

    নিম্নলিখিত JSONThreatProtection নীতি সংক্রান্ত উদাহরণে, <Source> এলিমেন্টটি requests হিসেবে সেট করা হয়েছে।

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>requests</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    

    <Source> এলিমেন্টের সঠিক মান হল request, response বা message। কারণ অনুরোধ সঠিক ভ্যালু নয় এবং যে ফ্লোতে নীতি এক্সিকিউট করা হচ্ছে সেখানে এটি নেই, তাই আপনি এই সমস্যাটি দেখতে পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    

রেজোলিউশন

নিশ্চিত করুন যে JSONThreatProtection নীতির <Source> এলিমেন্টে সেট করা ভেরিয়েবলটি request, response বা message-এ সেট করা আছে এবং ফ্লোতে আছে যেখানে নীতিটি এক্সিকিউট করে।

উপরে দেখানো উদাহরণ JSONThreatProtection নীতি সংশোধন করতে, আপনি request ভেরিয়েবেল ব্যবহার করার জন্য <Source> এলিমেন্ট পরিবর্তন করতে পারেন, কারণ এটি অনুরোধ ফ্লোতে বিদ্যমান:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

NonMessageVariable

সমস্যার কোড

steps.jsonthreatprotection.NonMessageVariable

সমস্যার উত্তরের বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Variable var_name does not resolve to a Message"
        "detail": {
            "errorcode": "steps.jsonthreatprotection.NonMessageVariable"
        }
    }
}

সমস্যার উত্তর বডির উদাহরণ

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Variable message.content does not resolve to a Message",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.NonMessageVariable"
        }
    }
}

কারণ

JSONThreatProtection নীতিতে <Source> এলিমেন্টটি message টাইপের নয় এমন কোনও ভেরিয়েবলে সেট করা থাকলে এই সমস্যা হয়।

মেসেজ টাইপ ভেরিয়েবল সম্পূর্ণ HTTP অনুরোধ ও উত্তরকে উপস্থাপন করে। বিল্ট-ইন Apigee Edge ফ্লো ভেরিয়েবল অনুরোধ, উত্তর ও মেসেজ হল মেসেজ ধরনের। মেসেজ ভেরিয়েবল সম্পর্কে আরও জানতে, ভেরিয়েবল রেফারেন্স দেখুন।

ডায়াগনসিস

  1. JSONThreatProtection নীতির নাম এবং সোর্স ভেরিয়েবলের নাম ত্রুটি মেসেজ থেকে শনাক্ত করুন। যেমন, নিম্নলিখিত ত্রুটি মেসেজে, নীতির নাম হল JSON-Threat-Protection-1এবং সোর্স ভেরিয়েবল হল message.content:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
    
  2. JSONThreatProtection নীতির <Source> এলিমেন্ট (ধাপ ১-এ শনাক্ত করা হয়েছে) পরীক্ষা করুন।

    নিম্নলিখিত JSONThreatProtection নীতি সংক্রান্ত উদাহরণে, <Source>-এর মান message-এর পরিবর্তে message.content হিসেবে সেট করা হয়েছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>message.content</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    

    message.content মেসেজ টাইপের না হওয়ায়, আপনি এই সমস্যাটি পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does
    not resolve to a Message
    

রেজোলিউশন

নিশ্চিত করুন যে JSONThreatProtection নীতিতে ব্যর্থ হওয়া <Source> এলিমেন্টটি মেসেজ টাইপ ফ্লো ভেরিয়েবলে সেট করা আছে যা সেই ফ্লোতে বিদ্যমান যেখানে নীতিটি এক্সিকিউট হয়।

নীতি ঠিক করতে, আপনি <Source> এলিমেন্ট পরিবর্তন করে মেসেজ ধরনের একটি ভেরিয়েবল নির্দিষ্ট করতে পারেন। যেমন, JSONThreatProtection কাজ না করলে, আপনি <Source> এলিমেন্টকে message হিসেবে উল্লেখ করতে পারেন:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>message</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>