מוצג המסמך של 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 יכולה לגרום לסוגים שונים של שגיאות ביצוע שנכשלו. בטבלה הבאה מפורטים סוגי השגיאות השונים והסיבות האפשריות שלהם:
סוג השגיאה | סיבה |
חריגה מאורך השם של רשומת האובייקט | חריגה מאורך המחרוזת המקסימלי המותר בשם הערך של אובייקט. |
חרגת ממספר הרשומות של האובייקטים | יש חריגה ממספר הערכים המקסימלי שמותר באובייקט. |
חריגה ממספר רכיבי המערך | יש חריגה ממספר הרכיבים המקסימלי המותר במערך. |
חריגה מעומקו של הקונטיינר | יש חריגה מהעומק הפנימי המרבי המותר. |
חריגה מהאורך של ערך המחרוזת | יש חריגה מהאורך המקסימלי המותר לערך מחרוזת. |
אובייקט JSON לא תקין | המטען הייעודי (payload) שהוזן ב-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"
}
}
}
סיבה
השגיאה הזו מתקבלת אם המטען הייעודי (payload) של הודעת הקלט שצוין על ידי הרכיב <Source>
מכיל אובייקט JSON עם שם מאפיין שחורג מהאורך המקסימלי שצוין ברכיב <ObjectEntryNameLength>
.
לדוגמה, אם המדיניות מציינת שהערך של רכיב <ObjectEntryNameLength>
הוא 5, אבל למטען הייעודי של הודעת הקלט יש מאפיין JSON שהשם שלו מכיל יותר מ-5 תווים, תופיע השגיאה הזו.
אבחון
בודקים את הודעת השגיאה כדי לזהות את שם המדיניות 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
בודקים את המדיניות שזיהיתם בשלב 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>
בודקים את מספר השורה הספציפית (שזוהה בשלב 1) של המטען הייעודי (Payload) של הקלט ובודקים אם האורך של שם האובייקט גדול מהערך שצוין ברכיב
<ObjectEntryNameLength>
(שזוהה בשלב 2). אם אורך שם האובייקט חורג מהמספר הזה, זו הסיבה לשגיאה.דוגמה למטען ייעודי (payload) של קלט:
{ "number" : 500, "string" : "text" }
המטען הייעודי (payload) של 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 נועדה להגן מפני מטענים ייעודיים (payloads) עם שמות של אובייקטים שחורגים מהערך שהוגדר, הודעת השגיאה אמורה להופיע. במקרה כזה לא נדרשת פעולה נוספת.
עם זאת, אם תחליטו שאפשר לציין שמות ארוכים יותר של אובייקטים במטען הייעודי (Payload) ללא כל תוצאה, יש לשנות את <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"
}
}
}
סיבה
השגיאה הזו מתקבלת אם המטען הייעודי (payload) של הודעת הקלט שצוין על ידי הרכיב <Source>
מכיל אובייקט JSON שמכיל יותר רשומות (מאפיינים) מהערך שצוין ברכיב <ObjectEntryCount>
של המדיניות.
לדוגמה, אם הרכיב <ObjectEntryCount>
הוא 5, אבל במטען הייעודי (payload) של הקלט יש יותר מ-5 רשומות, המערכת תפסול את השגיאה הזו.
אבחון
בודקים את הודעת השגיאה כדי לזהות את שם המדיניות 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
חשוב לשים לב לערך שצוין ברכיב
<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>
בודקים את מספר השורה הספציפית (שזוהה בשלב 1) של המטען הייעודי (Payload) של הקלט ובודקים אם מספר הישויות במטען הייעודי (Payload) גדול מהערך שצוין לרכיב
<ObjectEntryCount>
(שזוהה בשלב 2). אם מספר האובייקטים גדול ממספר הרשומות של האובייקטים, זו הסיבה לשגיאה.הנה דוגמה למטען ייעודי (payload) של קלט:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }
במטען הייעודי (payload) של JSON שמוצג למעלה, הרשומה השישית מתרחשת בשורה #7 (חברה). מכיוון שמספר הרשומות של האובייקטים במטען הייעודי (payload) של ה-JSON בקלט גדול מ-5 (הערך שצוין לרכיב
<ObjectEntryCount>
), מתקבלת השגיאה הבאה:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
רזולוציה
אם מדיניות JSONThreatProtection נועדה להגן מפני מטענים ייעודיים עם מספר רשומות של אובייקטים שחורגות מסף ספציפי, הודעת השגיאה אמורה להופיע. במקרה כזה אין צורך בפעולות נוספות.
עם זאת, אם תחליטו שאפשר לכלול עוד רשומות של אובייקטים במטען הייעודי (Payload) ללא כל תוצאה, יש לשנות את <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 רכיבים, השגיאה הזו תוחלף.
אבחון
בודקים את הודעת השגיאה כדי לזהות את שם המדיניות ואת מספר השורה שבה יש חריגה מאורך המערך. לדוגמה, בהודעת השגיאה הבאה, שם המדיניות הוא
JSON-Threat-Protection-1
ומספר השורה במטען הייעודי (Payload) הוא3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
חשוב לשים לב לערך שצוין ברכיב
<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>
בודקים את מספר השורה הספציפית (שזוהה בשלב 1) של המטען הייעודי (payload) של הקלט ובודקים אם המערך שצוין מכיל ספירה גבוהה יותר מהמספר שצוין ברכיב
<ArrayElementCount>
(שזוהה בשלב 2). אם מספר רכיבי המערך חורג מהספירה, זו הסיבה לשגיאה.הנה דוגמה למטען ייעודי (payload) של קלט:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
המטען הייעודי (payload) של 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"
}
}
}
סיבה
השגיאה הזו מתרחשת אם מטען הייעודי (payload) של הודעת הקלט שצוין על ידי הרכיב <Source>
מכיל אובייקט JSON שמכיל רכיבי JSON עם עומק מאגר (container) שחורג מעומק המאגר המקסימלי שצוין ברכיב <ContainerDepth>
של המדיניות. 'עומק הקונטיינר' הוא העומק המקסימלי המותר של רכיבי JSON. לדוגמה, מערך שמכיל אובייקט שמכיל אובייקט יביא לעומק הכליאה של 3.
לדוגמה, אם האלמנט <ContainerDepth>
הוא 3
, אבל עומק הקונטיינר של המטען הייעודי (payload) של הקלט חורג מהמגבלה הזו, מתרחשת הטלת השגיאה הזו.
אבחון
בודקים את הודעת השגיאה כדי לזהות את שם המדיניות JSONThreatProtection ואת מספר השורה שבה יש חריגה מעומק הקונטיינר. לדוגמה, בהודעת השגיאה הבאה, שם המדיניות הוא
JSON-Threat-Protection-1
ומספר השורה במטען הייעודי (Payload) הוא5
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
חשוב לשים לב לערך שצוין לאלמנט
<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>
בודקים את מספר השורה הספציפית (שזוהה בשלב 1) של המטען הייעודי (payload) של הקלט ובודקים אם עומק הקונטיינר במטען הייעודי (Payload) גבוה מהערך שצוין ברכיב
<ContainerDepth>
(שזוהה בשלב 2). אם עומק הקונטיינר חורג מהספירה, זו הסיבה לשגיאה.הנה דוגמה למטען ייעודי (payload) של קלט:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
עומק הקונטיינר הוא 6 בשורה 5 של המטען הייעודי (payload) של JSON שמוצג למעלה. מהעומק גדול מ-5, הערך שצוין לרכיב
<ContainerDepth>
של מדיניות JSONThreatProtection מקבלת את השגיאה הבאה:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
רזולוציה
אם מדיניות JSONThreatProtection נועדה להגן מפני מטענים ייעודיים (payloads) עם עומק קונטיינרים שחורגים מהערך שצוין, הודעת השגיאה אמורה להופיע. במקרה כזה, אין צורך לבצע פעולה נוספת.
עם זאת, אם קבעתם שמותר להשתמש בעומק קונטיינר גדול יותר, אפשר לשנות את <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"
}
}
}
סיבה
השגיאה הזו מתרחשת אם מטען הייעודי (payload) של הודעת הקלט שצוין על ידי האלמנט <Source>
מכיל רכיבי JSON שיש להם ערכים עם יותר תווים ממה שמאפשר האלמנט <StringValueLength>
.
לדוגמה, אם הרכיב <StringValueLength>
מוגדר במדיניות 50
, אבל המטען הייעודי של הקלט כולל רכיב אחד או יותר שהערכים שלהם מכילים יותר מ-50 תווים, השגיאה הזו תוחלף.
אבחון
בודקים את הודעת השגיאה כדי לזהות את שם המדיניות ואת מספר השורה שבה יש חריגה מאורך המחרוזת. בדוגמה הבאה, שם המדיניות הוא שורה
JSON-Threat-Protection-1 and
במטען הייעודי (payload)3
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
יש לשים לב לערך שצוין לרכיב
<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>
בודקים את מספר השורה הספציפית (שזוהה בשלב 1) של המטען הייעודי (payload) של הקלט ובודקים אם אורך הערך גדול ממספר התווים שצוין עבור הרכיב
<StringValueLength>
(שזוהה בשלב 2). אם אורך הערך חורג מהמגבלה, זו הסיבה לשגיאה.הנה דוגמה למטען ייעודי (payload) של קלט:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
המטען הייעודי (payload) של 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 נועדה להגן מפני מטענים ייעודיים עם ערכים שחורגים מאורך מחרוזת ספציפי, הודעת השגיאה אמורה להופיע. במקרה כזה, אין צורך לבצע פעולה נוספת.
עם זאת, אם קבעתם שאפשר לציין במטען הייעודי (Payload) ערך ארוך יותר, עליכם לשנות את <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 תקין.
אבחון
בודקים את הודעת השגיאה כדי לזהות את שם המדיניות ואת מספר השורה שבה התרחשה השגיאה. בדוגמה הבאה, שם המדיניות הוא שורה
JSON-Threat-Protection-1 and
במטען הייעודי (payload)2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
בודקים את מספר השורה הספציפית (שזוהה בשלב 1) של המטען הייעודי (payload) של הקלט ובודקים אם אובייקט ה-JSON שהועבר במטען הייעודי (Payload) הוא אכן אובייקט JSON תקין.
הנה דוגמה למטען ייעודי (payload) של קלט:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
במטען הייעודי (payload) של JSON שמוצג למעלה, בשורה 3 אין
":"
(נקודתיים). מכיוון שזה לא אובייקט JSON תקין, תקבלו את השגיאה:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
רזולוציה
צריך לוודא שמטען ייעודי (payload) תקין של JSON עם קלט מועבר לכל שרת Proxy ל-API שכולל את מדיניות JSONThreatProtection.
בדוגמה שלמעלה, משנים את המטען הייעודי (payload) של 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>
במדיניות מוגדר הערך
שלא קיים בתהליך שבו המדיניות מופעלת.
אבחון
מאתרים את שם המדיניות ואת שם המשתנה Source בהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, שם המדיניות הוא
JSON-Threat-Protection-1
והמשתנה Source הואrequests
:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
בודקים את הערך שצוין ברכיב
<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
. מכיוון שהערך requests לא חוקי ולא קיים בתהליך שבו המדיניות מתבצעת, מתקבלת השגיאה הבאה: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 הן מסוג הודעה. למידע נוסף על משתני הודעות, קראו את חומר העזר בנושא משתנים.
אבחון
מאתרים את שם המדיניות JSONThreatProtection ואת שם המשתנה Source בהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, שם המדיניות הוא
JSON-Threat-Protection-1
והמשתנה Source הואmessage.content
:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
בודקים את הרכיב
<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>
כך שיציין משתנה
מסוג הודעה. לדוגמה, בקובץ 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>