تحديد المشاكل وحلّها في وقت تشغيل ميزة "الحماية من التهديدات باستخدام JSON"

أنت تعرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

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> على أنّه 5 في السياسة، ولكنّ الحمولة في رسالة الإدخال تحتوي على سمة JSON يتجاوز اسمها 5 أحرف، يتم طرح هذا الخطأ.

التشخيص

  1. راجِع رسالة الخطأ لتحديد اسم سياسة JSONThreatProtection ورقم السطر الذي يظهر فيه اسم الإدخال الطويل. على سبيل المثال، في رسالة الخطأ التالية، اسم سياسة JSONThreatProtection هو JSON-Threat-Protection-1 ورقم السطر في الحمولة هو 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    
  2. راجِع السياسة التي حدّدتها في الخطوة 1، وسجِّل القيمة المحدّدة في العنصر <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. افحص رقم السطر المحدّد (المحدّد في الخطوة 1) لحمولة الإدخال وتحقَّق مما إذا كان طول اسم العنصر أكبر من القيمة المحدّدة في العنصر <ObjectEntryNameLength> (الذي تم تحديده في الخطوة 2). إذا كان طول اسم العنصر يتجاوز هذا العدد، هذا هو سبب الخطأ.

    في ما يلي مثال على حمولة الإدخال:

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

    تحتوي حمولة JSON الموضحة أعلاه على سمة باسم number في السطر 2 وتحتوي على 6 أحرف (طول الاسم هو 6). بما أنّ طول اسم الكائن أكبر من 5 (القيمة المحدّدة للعنصر <ObjectEntryNameLength>)، ستحصل على الخطأ التالي:

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

الدقة

إذا كانت سياسة JSONThreatProtection تهدف إلى الحماية من الحمولات التي تحتوي على أسماء إدخالات كائنات تتجاوز القيمة المحدّدة، من المتوقع ظهور رسالة الخطأ. في هذه الحالة، ليس عليك اتّخاذ أي إجراء إضافي.

ومع ذلك، إذا تبيّن لك أنّه يمكن تحديد أسماء إدخالات كائنات أطول في الحمولة بدون أي عواقب، يمكنك تعديل <ObjectEntryNameLength> إلى قيمة مناسبة استنادًا إلى متطلباتك.

على سبيل المثال، إذا كنت تعتقد أنّه يمكنك السماح بأسماء عناصر تصل إلى 10 أحرف، يمكنك تعديل سياسة 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> هو 5، ولكنّ الحمولة في ملف JSON المُدخلة تحتوي على أكثر من 5 إدخالات، يتمّ طرح هذا الخطأ.

التشخيص

  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> من السياسة (الذي تم تحديده في الخطوة 1).

    في مثال السياسة التالي، يتم ضبط <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. راجِع رقم السطر المحدّد (الذي تم تحديده في الخطوة 1) من الحمولة المُدخلة وتحقّق مما إذا كان عدد الكيانات في الحمولة أكبر من القيمة المحدّدة لعنصر <ObjectEntryCount> (الذي تم تحديده في الخطوة 2). إذا تجاوز عدد العناصر عدد الإدخالات في الكائن، يكون هذا هو سبب الخطأ.

    في ما يلي مثال على حمولة الإدخال:

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

    في الحمولة بتنسيق JSON الموضَّحة أعلاه، يظهر الإدخال السادس في السطر رقم 7 (company). بما أنّ عدد إدخالات الكائنات في الحمولة بتنسيق JSON التي تم إدخالها أكبر من 5 (القيمة المحدّدة للعنصر <ObjectEntryCount>)، يظهر لك الخطأ التالي:

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

الدقة

إذا كانت سياسة JSONThreatProtection تهدف إلى الحماية من الحمولات التي تتضمن عددًا من إدخالات الكائنات التي تتجاوز حدًا محددًا، من المتوقع ظهور رسالة الخطأ. في هذه الحالة، ليس عليك اتّخاذ أي إجراء إضافي.

ومع ذلك، إذا تبيّن لك أنّه يمكن تضمين المزيد من إدخالات العناصر في الحمولة بدون أي عواقب، يمكنك تعديل <ObjectEntryCount> إلى قيمة مناسبة استنادًا إلى متطلباتك.

على سبيل المثال، إذا كنت تعتقد أنّه يمكنك السماح بما يصل إلى 10 إدخالات للعناصر، عليك تعديل سياسة 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 تضمّ أكثر من 3 عناصر، يتم طرح هذا الخطأ.

التشخيص

  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> في السياسة (المحدَّدة في الخطوة 1).

    في مثال سياسة 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. افحص رقم السطر المحدّد (المحدّد في الخطوة 1) لحمولة الإدخال وتحقَّق مما إذا كان عدد المصفوفة المحدّد هناك أعلى من الرقم المحدّد في العنصر <ArrayElementCount> (الذي تم تحديده في الخطوة 2). إذا تجاوز عدد عناصر الصفيفة العدد، فإن هذا هو سبب الخطأ.

    في ما يلي مثال على حمولة الإدخال:

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

    تحتوي حمولة JSON المعروضة أعلاه على 5 عناصر في الصفيف المُسمى models في السطر 3. بما أنّ عدد عناصر الصفيف أكبر من 3 (القيمة المحدّدة لعنصر <ArrayElementCount>)، يظهر لك الخطأ التالي:

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

الدقة

إذا كانت سياسة JSONThreatProtection تهدف إلى الحماية من الحمولات التي لها حدّ معيّن لعدد الصفائف، من المتوقع ظهور رسالة الخطأ. في هذه الحالة، ليس عليك اتّخاذ أي إجراء إضافي.

ومع ذلك، إذا تبيّن لك أنّه يمكن السماح بعدد أكبر من العناصر في المصفوفة، يمكنك تعديل <ArrayElementCount> إلى قيمة مناسبة استنادًا إلى متطلباتك.

على سبيل المثال، إذا كنت تعتقد أنّه يمكنك السماح بما يصل إلى 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>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. على سبيل المثال، ستؤدي المصفوفة التي تحتوي على عنصر يحتوي على عنصر إلى عمق احتواء يبلغ 3.

على سبيل المثال، إذا كان عنصر <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> (الذي تم تحديده في الخطوة 1).

    في مثال سياسة 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. راجِع رقم السطر المحدّد (الذي تم تحديده في الخطوة 1) من الحمولة البرمجية للدخل وتحقّق مما إذا كان عمق الحاوية في الحمولة البرمجية أعلى من القيمة المحدّدة في عنصر <ContainerDepth> (الذي تم تحديده في الخطوة 2). إذا كان عمق الحاوية يتجاوز العدد، هذا هو سبب الخطأ.

    في ما يلي مثال على حمولة الإدخال:

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

    تحتوي حمولة JSON المعروضة أعلاه على عمق حاوية يبلغ 6 في السطر 5. بما أنّ عمق التحليل أكبر من 5، فإنّ القيمة المحدّدة لعنصر <ContainerDepth> في سياسة JSONThreatProtection تؤدي إلى ظهور الخطأ التالي:

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

الدقة

إذا كانت سياسة JSONThreatProtection تهدف إلى الحماية من حِزم البيانات التي تزيد أعماق حاوياتها عن القيمة المحدّدة، من المتوقّع ظهور رسالة الخطأ. في هذه الحالة، ليس عليك اتّخاذ أي إجراء إضافي.

ومع ذلك، إذا تبيّن لك أنّه يمكن استخدام قيم أعلى لارتفاع الحاوية، يمكنك تعديل <ContainerDepth> إلى قيمة مناسبة استنادًا إلى متطلباتك.

على سبيل المثال، إذا كنت تعتقد أنّه يمكنك السماح بعمق الحاوية حتى 10، عليك تعديل السياسة على النحو التالي:

<?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 في السياسة، ولكنّ الحمولة البرمجية للإدخال تحتوي على عنصر واحد أو أكثر تحتوي قيمه على أكثر من 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> في (الذي تم تحديده في الخطوة 1).

    في مثال سياسة 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. راجِع رقم السطر المحدّد (الذي تم تحديده في الخطوة 1) من الحمولة المُدخلة وتحقَّق مما إذا كان طول القيمة أكبر من عدد الأحرف المحدّدة للعنصر <StringValueLength> (الذي تم تحديده في الخطوة 2). إذا تجاوز طول القيمة الحدّ الأقصى، هذا هو سبب الخطأ.

    في ما يلي مثال على حمولة الإدخال:

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

    تحتوي حمولة JSON الموضّحة أعلاه على عنصر باسم Place Name تبلغ قيمة Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu 85 حرفًا في السطر 3. بما أنّ طول القيمة أكبر من 50، وهي القيمة المحدّدة في عنصر <StringValueLength>، يظهر لك الخطأ التالي:

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

الدقة

إذا كانت سياسة JSONThreatProtection مخصّصة للحماية من حِزم البيانات التي تحتوي على قيم تتجاوز طول سلسلة معيّن، من المتوقّع ظهور رسالة الخطأ. في هذه الحالة، ليس عليك اتّخاذ أي إجراء إضافي.

وإذا قررت إمكانية تحديد طول قيمة أطول في الحمولة، يمكنك تعديل <StringValueLength> إلى قيمة مناسبة بناءً على متطلّباتك.

على سبيل المثال، إذا كنت تعتقد أنّه يمكنك السماح بقيمة تصل إلى 90 حرفًا، يمكنك تعديل السياسة على النحو التالي:

<?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"
        }
    }
}

السبب

يحدث هذا الخطأ إذا لم تكن حمولة رسالة الإدخال المحدّدة بواسطة العنصر <Source> في سياسة JSONThreatProtection كائن JSON صالحًا.

التشخيص

  1. راجِع رسالة الخطأ لتحديد اسم السياسة ورقم السطر الذي حدث فيه الخطأ. في المثال التالي، اسم السياسة هو JSON-Threat-Protection-1 andسطر في الحمولة 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. راجِع رقم السطر المحدّد (الذي تم تحديده في الخطوة 1) من الحمولة المُدخلة وتحقّق مما إذا كان عنصر JSON الذي تم تمريره في الحمولة هو عنصر JSON صالح.

    في ما يلي مثال على حمولة الإدخال:

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

    في الحمولة البرمجية بتنسيق JSON الموضّحة أعلاه، لا يحتوي السطر 3 على ":" (قوس). وبما أنّه ليس كائن JSON صالحًا، يظهر لك الخطأ التالي:

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

الدقة

تأكَّد من تمرير حمولة JSON صالحة إلى أي وكيل واجهة برمجة تطبيقات يتضمّن سياسة JSONThreatProtection.

بالنسبة إلى المثال الموضّح أعلاه، عدِّل الحمولة بتنسيق 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"
        }
    }
}

السبب

يحدث هذا الخطأ إذا كان المتغيّر message المحدّد في عنصر <Source> من سياسة JSONThreatProtection هو:

  • خارج النطاق (غير متوفّر في المسار المحدّد الذي يتم تنفيذ السياسة فيه)
  • ليس من القيم الصالحة request أو response أو message

على سبيل المثال، يحدث هذا الخطأ إذا تم ضبط عنصر <Source> في السياسة على متغيّر غير متوفّر في العملية التي يتم فيها تنفيذ السياسة.

التشخيص

  1. حدِّد اسم السياسة واسم متغيّر المصدر من رسالة الخطأ. على سبيل المثال، في رسالة الخطأ التالية، اسم السياسة هو JSON-Threat-Protection-1 ومتغيّر المصدر هو requests:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    
  2. افحص القيمة المحدّدة للعنصر <Source> والمحدّد في الخطوة 1.

    في مثال سياسة 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
    

الدقة

تأكَّد من ضبط المتغيّر في عنصر <Source> لسياسة JSONThreatProtection التي تعذّر تنفيذها على request أو response أو message وأنّه متوفّر في العملية التي يتم تنفيذ السياسة فيها.

لتصحيح مثال سياسة JSONThreatProtection الموضّح أعلاه، يمكنك تعديل العنصر <Source> لاستخدام المتغيّر request، لأنّه متوفّر في مسار الطلب:

<?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"
        }
    }
}

السبب

يحدث هذا الخطأ إذا تم ضبط العنصر <Source> في سياسة JSONThreatProtection على متغيّر ليس من النوع message.

تمثّل متغيّرات أنواع الرسائل طلبات HTTP واستجاباتها بالكامل. إنّ متغيّرات تدفق Apigee Edge المدمجة، وهي request (الطلب) وresponse (الرد) وmessage (الرسالة)، من النوع message. لمعرفة المزيد من المعلومات عن متغيّرات الرسائل، اطّلِع على مرجع المتغيّرات.

التشخيص

  1. حدِّد اسم سياسة JSONThreatProtection واسم متغيّر المصدر من رسالة الخطأ. على سبيل المثال، في رسالة الخطأ التالية، اسم السياسة هوJSON-Threat-Protection-1 والمتغيّر "المصدر" هوmessage.content:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
    
  2. راجِع عنصر <Source> في سياسة JSONThreatProtection (المحدّد في الخطوة 1).

    في المثال التالي على سياسة JSONThreatProtection، تم ضبط <Source> على message.content بدلاً من 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.content</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    

    بما أنّ "message.content" ليس من النوع "رسالة"، ستتلقّى الخطأ:

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

الدقة

تأكَّد من أنّ عنصر <Source> في سياسة JSONThreatProtection التي تعذّر تنفيذها تم ضبطه على متغيّر تدفق من النوع message والذي يتوفّر في التدفق الذي يتم تنفيذ السياسة فيه.

لتصحيح السياسة، يمكنك تعديل العنصر <Source> لتحديد متغيّر من النوع message. على سبيل المثال، في حالة فشل 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>