אתם צופים במסמכי התיעוד של 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 הייעודי (payload) שהוזן לא תקין. |
חריגה מאורך שם רשומת האובייקט
גוף התגובה לשגיאה
{ "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, אבל למטען הייעודי (payload) של הודעת הקלט יש מאפיין JSON שהשם שלו ארוך מ-5 תווים, השגיאה הזו תופעל.
אבחון
בודקים את הודעת השגיאה כדי לזהות את שם המדיניות JSONThreatProtection ואת מספר השורה שבה מופיע שם הערך הארוך. לדוגמה, בהודעת השגיאה הבאה, שם מדיניות JSONThreatProtection הוא
JSON-Threat-Protection-1ומספר השורה במטען הייעודי (payload) הוא 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" }מטען ה-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 נועדה להגן מפני מטען ייעודי (payload) עם שמות של רשומות אובייקט שחורגים מהערך המוגדר, הודעת השגיאה צפויה. במקרה כזה, לא נדרשת פעולה נוספת.
עם זאת, אם קובעים שאפשר לציין שמות ארוכים יותר של רשומות אובייקט במטען הייעודי (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"
}
}
}
סיבה
השגיאה הזו מתרחשת אם המטען הייעודי של הודעת הקלט שצוין ברכיב <Source> מכיל אובייקט JSON עם יותר רשומות (מאפיינים) מהערך שצוין ברכיב <ObjectEntryCount> של המדיניות.
לדוגמה, אם הערך של הרכיב <ObjectEntryCount> הוא 5, אבל מטען ה-JSON הייעודי (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) של הקלט, ומוודאים שמספר הישויות במטען הייעודי גדול מהערך שצוין עבור רכיב
<ObjectEntryCount>(שזוהה בשלב 2). אם מספר האובייקטים חורג ממספר רשומות האובייקטים, זו הסיבה לשגיאה.דוגמה למטען ייעודי (payload) של קלט:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }במטען הייעודי (payload) של JSON שמוצג למעלה, הרשומה השישית מופיעה בשורה 7 (company). מכיוון שמספר רשומות האובייקט במטען הייעודי (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, אבל למטען הייעודי (payload) של הקלט יש מערך JSON עם יותר מ-3 רכיבים, השגיאה הזו תופעל.
אבחון
בודקים את הודעת השגיאה כדי לזהות את שם המדיניות ואת מספר השורה שבה חל חריגה מאורך המערך. לדוגמה, בהודעת השגיאה הבאה, שם המדיניות הוא
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רושמים את הערך שצוין לרכיב
<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) של מטען הנתונים של הקלט, ומוודאים שהמערך שמצוין שם מכיל מספר גבוה יותר מהמספר שמצוין ברכיב
<ArrayElementCount>(שמצוין בשלב 2). אם מספר רכיבי המערך חורג מהספירה, זו הסיבה לשגיאה.דוגמה למטען ייעודי (payload) של קלט:
{ "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 נועדה להגן מפני מטען ייעודי (payload) עם סף ספציפי של מספר מערכים, הודעת השגיאה צפויה. במקרה כזה, לא נדרשת פעולה נוספת.
עם זאת, אם לדעתכם אפשר לאפשר מספר גבוה יותר של רכיבים במערך, אתם יכולים לשנות את הערך של <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 עם עומק מאגר נתונים שעולה על העומק המקסימלי של מאגר הנתונים שצוין ברכיב <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) של הקלט, ובודקים אם עומק המאגר במטען הייעודי גבוה מהערך שצוין ברכיב
<ContainerDepth>(שזוהה בשלב 2). אם עומק מאגר התגים חורג מהמספר, זו הסיבה לשגיאה.דוגמה למטען ייעודי (payload) של קלט:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }עומק המאגר של מטען ה-JSON הייעודי שמוצג למעלה הוא 6 בשורה 5. מכיוון שהערך של depth הוא 0x0A, שהוא גדול מ-5, מתקבלת השגיאה הבאה לגבי רכיב
<ContainerDepth>של מדיניות JSONThreatProtection:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
רזולוציה
אם מדיניות JSONThreatProtection נועדה להגן מפני מטען ייעודי (payload) עם עומק של קונטיינר שחורג מהערך שצוין, הודעת השגיאה צפויה. במקרה כזה, לא נדרשת פעולה נוספת.
עם זאת, אם קובעים שעומק גבוה יותר של מאגרים מקובל, צריך לשנות את הערך של <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 במדיניות, אבל מטען הייעודי (payload) של הקלט כולל רכיב אחד או יותר שהערכים שלהם מכילים יותר מ-50 תווים, השגיאה הזו תופעל.
אבחון
בודקים את הודעת השגיאה כדי לזהות את שם המדיניות ואת מספר השורה שבה אורך המחרוזת חורג מהמותר. בדוגמה הבאה, שם המדיניות הוא
JSON-Threat-Protection-1 andline in the payload3.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) של מטען הנתונים של הקלט, ומבררים אם אורך הערך גדול ממספר התווים שצוין עבור האלמנט
<StringValueLength>(שצוין בשלב 2). אם אורך הערך חורג מהמגבלה, זה הגורם לשגיאה.דוגמה למטען ייעודי (payload) של קלט:
{ "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 נועדה להגן מפני מטען ייעודי (payload) עם ערכים שחורגים מאורך מחרוזת ספציפי, הודעת השגיאה צפויה. במקרה כזה, לא נדרשת פעולה נוספת.
עם זאת, אם קובעים שאפשר לציין אורך ערך ארוך יותר במטען הייעודי (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"
}
}
}
סיבה
השגיאה הזו מתרחשת אם מטען הייעודי (payload) של הודעת הקלט שצוין ברכיב <Source> במדיניות JSONThreatProtection הוא לא אובייקט JSON תקין.
אבחון
בודקים את הודעת השגיאה כדי לזהות את שם המדיניות ואת מספר השורה שבה השגיאה התרחשה. בדוגמה הבאה, שם המדיניות הוא
JSON-Threat-Protection-1 andline in the payload2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3בודקים את מספר השורה הספציפי (שזוהה בשלב 1) של מטען הייעודי (payload) של הקלט, ומוודאים שאובייקט ה-JSON שהועבר במטען הייעודי הוא אכן אובייקט 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 מועבר לכל API Proxy שכולל את מדיניות JSONThreatProtection.
בדוגמה שמתוארת למעלה, משנים את מטען ה-JSON הייעודי (payload) באופן הבא:
{
"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> במדיניות מוגדר למשתנה שלא קיים בתהליך שבו המדיניות מופעלת.
אבחון
מזהים את שם המדיניות ואת השם של משתנה המקור מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, שם המדיניות הוא
JSON-Threat-Protection-1ומשתנה המקור הוא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 לזרימת נתונים, request, response ו-message הם מסוג message. מידע נוסף על משתני הודעות זמין במאמר בנושא משתנים.
אבחון
מזהים את שם המדיניות JSONThreatProtection ואת השם של משתנה המקור בהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, שם המדיניות הוא
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>