הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של Apigee Edge
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"
}
}
}
מטרה
השגיאה הזו מתרחשת אם המטען הייעודי (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, אבל במטען הייעודי (payload) של קלט ה-JSON יש יותר מ-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ומספר השורה במטען הייעודי (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" ] }מטען ה-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ומספר השורה במטען הייעודי הוא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) של מטען הנתונים של הקלט, ומבררים אם עומק המאגר במטען הנתונים גבוה מהערך שצוין ברכיב
<ContainerDepth>(שצוין בשלב 2). אם עומק מאגר התגים חורג מהמספר, זו הסיבה לשגיאה.דוגמה למטען ייעודי (payload) של קלט:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }מטען ה-JSON הייעודי שמוצג למעלה מכיל עומק של 6 בשורה 5. מכיוון שהערך של depth גדול מ-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 במדיניות, אבל מטען הייעוד של הקלט כולל רכיב אחד או יותר שהערכים שלהם מכילים יותר מ-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) של מטען הייעודי (payload) של הקלט, ומבררים אם אורך הערך גדול ממספר התווים שצוין עבור האלמנט
<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 flow request, response ו-message הם מסוג message. מידע נוסף על משתני הודעות זמין במאמר בנושא משתנים.
אבחון
מזהים את שם המדיניות JSONThreatProtection ואת השם של משתנה המקור מהודעת השגיאה. לדוגמה, בהודעת השגיאה הבאה, שם המדיניות הוא
JSON-Threat-Protection-1ומשתנה המקור הוא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>