מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
InvalidRegularExpression
הודעת שגיאה
כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:
Error Deploying Revision revision_number to environment RegularExpressionProtection policy_name: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.
הודעת שגיאה לדוגמה
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
צילום מסך של שגיאה לדוגמה
סיבה
אם הביטוי הרגולרי ברכיב <Pattern>
של מדיניות regularExpressionProtection לא תקין, הפריסה של שרת ה-proxy ל-API תיכשל.
אבחון
מזהים את השם של regularExpressionProtection בהודעת השגיאה. לדוגמה, בשגיאה הבאה, השם regularExpressionProtection הוא
Regular-Expression-Protection-1:
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
יש לבדוק את כל הרכיבים מסוג
<Pattern>
ב-XML של המדיניות בנושא הגנה על ביטויים רגולריים שנכשלו. יש לבדוק אם רכיבי<Pattern>
כלשהם כוללים ביטוי רגולרי לא חוקי. אם באחד מרכיבי<Pattern>
יש ביטוי רגולרי לא חוקי, זו הסיבה לשגיאה.לדוגמה, המדיניות הבאה מציינת את הערך של
Pattern>
שלfoo){2}
, שנחשב לביטוי רגולרי לא חוקי:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <URIPath> <Pattern>foo){2}</Pattern> </URIPath> <Source>request</Source> </RegularExpressionProtection>
בדוגמה שלמעלה, לביטוי הרגולרי שצוין בפונקציה
<Pattern>
חסרים סוגריים פותחים. לכן הוא נחשב כביטוי רגולרי לא חוקי. כתוצאה מכך, הפריסה של שרת ה-proxy ל-API נכשלה.
רזולוציה
יש לוודא שכל רכיב <Pattern>
במדיניותregularExpressionProtection מכיל ביטוי רגולרי תקין. ניתן לחפש כלים שונים לביטוי רגולרי (regex) אונליין או אופליין כדי לנפות באגים בביטויים הרגולריים.
כדי לתקן את הדוגמה לדוגמה של מדיניות ההגנה על ביטויים רגולריים שמוצגת למעלה, צריך להוסיף את הסוגריים החסרים:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <URIPath> <Pattern>(foo){2}</Pattern> </URIPath> <Source>request</Source> </RegularExpressionProtection>
XPathCompilationFailed
הודעת שגיאה
כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:
Error Deploying Revision revision_number to environment RegularExpressionProtection policy_name: Failed to compile xpath xpath_expression. Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.
הודעת שגיאה לדוגמה
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile xpath /notapigee:foo/notapigee:bar. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
צילום מסך של שגיאה לדוגמה
סיבה
אם התחילית או הערך שנעשה בהם שימוש ברכיב <XPath>
אינם חלק ממרחבי השמות המוצהרים במדיניות regularExpressionProtection, הפריסה של שרת ה-proxy ל-API תיכשל.
מידע נוסף על מרחבי שמות, XPath וקידומת זמין במאמר מרחבי שמות של XML והאופן שבו הם משפיעים על XPath ו-XX.
אבחון
מאתרים את השם של מדיניותregularExpressionProtection שבה אירעה השגיאה, ואת שם ה-XPath Expression שבו נעשה שימוש. שני הפריטים האלה מופיעים בהודעת השגיאה.
לדוגמה, בשגיאה הבאה , שם המדיניות הוא
Regular-Expression-Protection-1
וביטוי ה-XPath הוא/notapigee:foo/notapigee:bar:
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile xpath /notapigee:foo/notapigee:bar. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
ב-XML של המדיניות בנושא 'הגנה על ביטויים רגולריים' שנכשל, מוודאים שה-XPath שהוגדר ברכיב
Expression
תואם ל-XPath שצוין בהודעת השגיאה (שלב 1 למעלה).לדוגמה, המדיניות הבאה מציינת את ה-XPath כ-
/notapigee:foo/notapigee:bar
שתואם למה שמופיע בהודעת השגיאה:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/notapigee:foo/notapigee:bar</Expression> <Type>nodeset</Type> <Pattern>pattern</Pattern> <Pattern>pattern2</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
- לבדוק את הרכיבים
<Namespaces>
ו-<Expression>
במדיניותregularExpressionProtection. אם ה-<Expression>
הספציפי שצוין בהודעת השגיאה משתמש בקידומת או בערך שאינם חלק ממרחבי השמות המוצהרים במדיניות regularExpressionProtection, זו הסיבה לשגיאה.שימו לב שה-
<XPath>
הספציפי משתמש בקידומתnotapigee
בדוגמה regularExpressionProtection לדוגמה:<Expression>/notapigee:foo/notapigee:bar</Expression>
עם זאת, התחילית
notapigee
לא מוגדרת באף אחד מהרכיבי<Namespace>
; לכן הידור של<XPath>
נכשל שמוביל לכשל בפריסה.
רזולוציה
צריך לוודא שכל מרחבי השמות שנמצאים בשימוש ברכיבי <Expression>
ברכיבי <XPath>
מוצהרים ב-regularExpressionProtection. כדי לתקן את הדוגמה שלמעלה, אפשר להחליף את הקידומת notapigee
ל-apigee
, המוצהרת במרחבי שמות:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:foo/apigee:bar</Expression> <Type>nodeset</Type> <Pattern>pattern</Pattern> <Pattern>pattern2</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
CannotBeConvertedToNodeset
הודעת שגיאה
כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:
Error Deploying Revision revision_number to environment RegularExpressionProtection policy_name: Result of xpath xpath_expression cannot be converted to nodeset. Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.
הודעת שגיאה לדוגמה
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Result of xpath count(//apigee:foo) cannot be converted to nodeset. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
צילום מסך של שגיאה לדוגמה
סיבה
אם המדיניות בנושא ביטויים רגולריים כוללת ביטוי <XPath>
שבו הרכיב <Type>
מוגדר כ-nodeset, אבל לא ניתן להמיר את הביטוי לקבוצות צמתים, הפריסה של שרת ה-proxy ל-API תיכשל.
אבחון
מאתרים את המדיניות StandardExpressionProtection שבה אירעה השגיאה ואת ביטוי ה-XPath שלא ניתן להמיר ל-Nodeset. שני הפריטים האלה מופיעים בהודעת השגיאה.
לדוגמה, בשגיאה הבאה , שם המדיניות הוא
Regular-Expression-Protection-1
וביטוי ה-XPath הואcount(//apigee:foo):
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Result of xpath count(//apigee:foo) cannot be converted to nodeset. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
ב-XML של המדיניות בנושא 'הגנה על ביטויים רגולריים' שנכשל, מוודאים שה-XPath שהוגדר ברכיב
<Expression>
של הרכיב<XPath>
תואם ל-XPath שצוין בהודעת השגיאה (שלב 1 למעלה).לדוגמה, המדיניות הבאה מציינת את הערך
count(//apigee:foo)
, שתואם את תוכן הודעת השגיאה:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>count(//apigee:foo)</Expression> <Type>nodeset</Type> <Pattern>pattern</Pattern> <Pattern>pattern2</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
צריך לבדוק את הערך שמוגדר ברכיב
<Type>
מתחת לרכיב<XPath>
. אם הרכיב<Type>
הואnodeset
, זו הסיבה לשגיאה.בדוגמה הזו, ביטוי ה-XPath הוא count() שלא מחזיר צומת אחד או יותר. כתוצאה מכך, הפריסה של שרת ה-proxy ל-API נכשלת.
רזולוציה
אם הרכיב <Type>
מוגדר לקבוצת הצמתים, צריך לוודא שהתוצאה של הרכיב <Expression>
שמוגדר ב-<XPath>
היא צומת אחד או יותר. לחלופין, אפשר לשנות את הרכיב <Type>
לערך מתאים יותר על סמך התרחיש לדוגמה שלכם.
כדי לתקן את הדוגמה שלמעלה, אפשר לשנות את הרכיב <Expression>
לערך אחר שיכול להחזיר צמתים:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:foo/apigee:bar</Expression> <Type>nodeset</Type> <Pattern>pattern</Pattern> <Pattern>pattern2</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
JSONPathCompilationFailed
הודעת שגיאה
כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:
Error Deploying Revision revision_number to environment RegularExpressionProtection policy_name: Failed to compile jsonpath jsonpath_expression Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.
הודעת שגיאה לדוגמה
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile jsonpath $.store.book[*.author. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
צילום מסך של שגיאה לדוגמה
סיבה
אם הרכיב <Expression>
ברכיב <JSONPath>
של מדיניות 'הגנה על ביטויים רגולריים' מוגדר לביטוי JSONPath לא חוקי, הפריסה של שרת ה-proxy ל-API תיכשל.
אבחון
מזהים את השם של מדיניותregularExpressionProtection שבה אירעה השגיאה ונעשה שימוש ב-JSONPath Expression הלא חוקי. שני הפריטים האלה מופיעים בהודעת השגיאה.
לדוגמה, בשגיאה הבאה , שם המדיניות הוא
Regular-Expression-Protection-1
וביטוי JSONPath הוא$.store.book[*.author:
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile jsonpath $.store.book[*.author. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
ב-XML של המדיניות בנושא regular Expression Protection שנכשל, מוודאים שה-JSONPath שהוגדר ברכיב
Expression
תואם ל-JSONPath שזוהה בהודעת השגיאה (שלב 1 למעלה).לדוגמה, המדיניות הבאה מציינת את הרכיב
Expression
תחת הרכיב<JSONPath>
כ-$.store.book[*.author
, שתואם למה שמופיע בהודעת השגיאה:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <JSONPayload> <JSONPath> <Expression>$.store.book[*.author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
צריך לבדוק רכיב
<Expression>
מתחת לרכיב<JSONPath>
במדיניות. אם הוא לא תואם לתחביר JSONPath, זו הסיבה לשגיאה. בדוגמה שלמעלה חסר התו הסוגר הריבועי, ולכן הביטוי לא תקף.הביטוי של נתיב ה-JSON לא תקין, ולכן הפריסה של שרת ה-proxy ל-API נכשלה.
רזולוציה
צריך לוודא שהערך של הרכיב <Expression>
שבתוך האלמנט <JSONPath>
במדיניות regular Expression Protection הוא ביטוי JSONPath חוקי.
כדי לתקן את הדוגמה שלמעלה, אפשר להוסיף תו לסגירת סוגריים מרובעים חסר לערך הרכיב <Expression>
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
NothingToEnforce
הודעת שגיאה
כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:
Error Saving Revision revision_number RegularExpressionProtection policy_name: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
הודעת שגיאה לדוגמה
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
צילום מסך של שגיאה לדוגמה
סיבה
אם מדיניותregularExpressionProtection לא כוללת את הרכיבים <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
או <JSONPayload>
, הפריסה של שרת ה-proxy ל-API תיכשל.
כפי שמצוין בהודעת השגיאה, מדיניותregularExpressionProtection חייבת לכלול לפחות אחד מהרכיבים הבאים במדיניות: <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
או <JSONPayload>
.
אבחון
מזהים את השם של מדיניותregularExpressionProtection שבה אירעה השגיאה. הוא מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה , שם המדיניות הוא
Regular-Expression-Protection-1:
.RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
לבדוק את המדיניות בנושא 'הגנה על ביטויים רגולריים' שנכשלה (זוהתה בשלב 1 למעלה). אם המדיניות לא כוללת אפילו אחד מהרכיבים הבאים:
<URIPath>
,<QueryParam>
,<Header>
,<FormParam>
,<XMLPayload>
או<JSONPayload>
, זו הסיבה לשגיאה.לדוגמה, המדיניות הבאה בנושא 'הגנה על ביטוי רגולרי' לא כוללת אף אחד מהאלמנטים שצוינו למעלה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> </RegularExpressionProtection>
מאחר שאף אחד מהאלמנטים שחובה להוסיף לא קיים במדיניות חילוץ משתנים, הפריסה של שרת ה-proxy ל-API נכשלת.
רזולוציה
יש לוודא שהמדיניות StandardExpressionProtection כוללת לפחות אחד מהרכיבים הנדרשים הבאים: <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
או <JSONPayload>
. לדוגמה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
NoPatternsToEnforce
הודעת שגיאה
כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:
Error Saving Revision revision_number RegularExpressionProtection policy_name: No patterns to enforce in payload_name.
הודעת שגיאה לדוגמה
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
צילום מסך של שגיאה לדוגמה
סיבה
אם לאחד מהרכיבים ברמה העליונה (<URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
או <JSONPayload>
) לא מוגדר רכיב <Pattern>
במדיניותregularExpressionProtection, הפריסה של שרת ה-proxy ל-API תיכשל.
אבחון
מזהים את השם של מדיניותregularExpressionProtection שבה אירעה השגיאה ואת רכיב הצאצא שלא מכיל את הרכיב
<Pattern>
. שני הפריטים האלה מופיעים בהודעת השגיאה.לדוגמה, בשגיאה הבאה, שם המדיניות הוא
Regular-Expression-Protection-1
והרכיב הצאצא הואXPath:
RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
- צריך לבדוק אם המדיניות בנושא 'הגנה על ביטויים רגולריים' נכשלה ולוודא שרכיב הצאצא שזוהה בשלב 1 לא מכיל את הרכיב
<Pattern>
. אם הרכיב<Pattern>
לא קיים, זו הסיבה לשגיאה.לדוגמה, במדיניות הבאה אין רכיב
<Pattern>
בתוך<XPath>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> </XPath> </XMLPayload> </RegularExpressionProtection>
מכיוון שהרכיב
<XPath>
לא כולל רכיב<Pattern>
, הפריסה של שרת ה-proxy ל-API נכשלת.
רזולוציה
עליך לוודא שלכל הרכיבים <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
או <JSONPayload>
צוין <Pattern>
אחד לפחות. הסבר איך לציין את הרכיב בצורה נכונה מופיע במדיניותregularExpressionProtection.
כדי לתקן את הדוגמה שלמעלה, אפשר פשוט להוסיף את הרכיב <Pattern>
לרכיב <XPath>
מתחת ל-<XMLPayload>
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
NONEmptyPrefixMappedToEmptyURI
הודעת שגיאה
כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Non-empty prefix prefix_name cannot be mapped to empty uri.
הודעת שגיאה לדוגמה
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
צילום מסך של שגיאה לדוגמה
סיבה
השגיאה הזו מתרחשת אם למדיניותregularExpressionProtection מוגדרת קידומת ברכיב <Namespace>
מתחת לרכיב <XMLPayload>
, אבל לא מוגדר URI.
אבחון
מאתרים את המדיניותregularExpressionProtection שבה אירעה השגיאה ואת שם הקידומת שלא ממופה ל-URI. שני הפריטים האלה מופיעים בהודעת השגיאה.
לדוגמה, בשגיאה הבאה, שם המדיניות הוא regular Expression Protection-1 והקידומת היא apigee:
RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
ב-XML של המדיניות בנושא 'הגנה על ביטויים רגולריים' שנכשל, מוודאים ששם הקידומת שמוגדרת ברכיב
<Namespace>
ברכיב<XMLPayload>
תואם לשם הקידומת שצוינה בהודעת השגיאה (שלב 1 למעלה).לדוגמה, המדיניות הבאה מציינת קידומת בשם apigee ברכיב
<Namespace>
, שתואמת לתוכן שמופיע בהודעת השגיאה:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee"/> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
בודקים אם לרכיב
<Namespace>
עם הקידומת הספציפית שזוהתה בשלב 2 יש URI תקין. אם ה-URI חסר, זו הסיבה לשגיאה.בדוגמת המדיניות בנושא 'הגנה על ביטוי רגולרי (regex)' שמוצגת למעלה, שימו לב שאין URI שתואם לרכיב
<Namespace>
עם הקידומת apigee; ולכן מקבלים את השגיאה:Non-empty prefix apigee cannot be mapped to empty uri.
רזולוציה
חשוב לוודא שלכל רכיבי <Namespace>
שמוגדרים עם קידומת יש URI תואם במדיניות חילוץ משתנים. לדוגמה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
DuplicatePrefix
הודעת שגיאה
כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Duplicate prefix prefix_name.
הודעת שגיאה לדוגמה
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
צילום מסך של שגיאה לדוגמה
סיבה
השגיאה הזו מתרחשת אם ל-regularExpressionProtection יש אותה קידומת יותר מפעם אחת ברכיב <Namespace>
ברכיב <XMLPayload>
.
לדוגמה, השגיאה הזו מתרחשת מכיוון שתחילית ה-apigee מוגדרת פעמיים כפי שמוצג בהמשך:
<Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace>
אבחון
מזהים את מדיניות regularExpressionProtection שבה אירעה השגיאה ואת שם הקידומת. שני הפריטים האלה מופיעים בהודעת השגיאה.
לדוגמה, בשגיאה הבאה, שם המדיניות הוא regular Expression Protection-1 והקידומת היא apigee:
RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
ב-XML של המדיניות בנושא 'הגנה על ביטויים רגולריים' שנכשל, מוודאים ששם הקידומת שמוגדרת ברכיב
<Namespace>
ברכיב<XMLPayload>
תואם לשם הקידומת שצוינה בהודעת השגיאה (שלב 1 למעלה).לדוגמה, המדיניות הבאה מציינת קידומת בשם apigee ברכיב
<Namespace>
, שתואמת לתוכן שמופיע בהודעת השגיאה:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
בודקים אם הרכיב
<Namespace>
עם הקידומת הספציפית שזוהתה בשלב 2 הוגדר יותר מפעם אחת. אם הוא מוגדר יותר מפעם אחת, זו הסיבה לשגיאה.במדיניות לדוגמה בנושא 'הגנה על ביטוי רגולרי' שלמעלה, שימו לב שהרכיב
<Namespace>
עם קידומת ה-apigee הוגדר פעמיים; ולכן מקבלים את השגיאה:Duplicate prefix apigee.
רזולוציה
חשוב לוודא שיש רק הגדרה אחת לכל קידומת ברכיבי <Namespace>
במדיניותregularExpressionProtection. לדוגמה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
EmptyXPathExpression
הודעת שגיאה
כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Empty XPath expression.
הודעת שגיאה לדוגמה
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
צילום מסך של שגיאה לדוגמה
סיבה
אם למדיניותregularExpressionProtection לא מוגדר רכיב <Expression>
בתוך הרכיב <XPath>
, הפריסה של שרת ה-proxy ל-API תיכשל.
אבחון
מאתרים את המדיניות שנכשלה בנושא 'הגנה על ביטוי רגולרי' מהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא regular-Expression-Protection-1:
RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
ב-XML של המדיניות בנושא הגנה על ביטויים רגולריים שנכשלו, יש לקבוע אם יש רכיב
<XMLPayload>
עם רכיב צאצא<XPath>
שלא מוגדר בו רכיב<Expression>
, או אם הרכיב<Expression>
לא מוגדר לערך כלשהו. אם כן, זו הסיבה לשגיאה.לדוגמה, זוהי מדיניות בנושא 'הגנה על ביטוי רגולרי' שמכילה רכיב
<XMLPayload>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression></Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
מכיוון שיש רכיב
<Expression>
ריק ברכיב<XPath>
, הפריסה של שרת ה-proxy ל-API נכשלת.
רזולוציה
יש לוודא ש-regularExpressionProtection כולל רכיב <Expression>
לא ריק וחוקי שמוגדר ברכיב <XPath>
. לדוגמה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
EmptyJSONPathExpression
הודעת שגיאה
כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Empty JSONPath expression.
הודעת שגיאה לדוגמה
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
צילום מסך של שגיאה לדוגמה
סיבה
אם למדיניותregularExpressionProtection לא מוגדר רכיב <Expression>
בתוך הרכיב <JSONPath>
, הפריסה של שרת ה-proxy ל-API תיכשל.
אבחון
מאתרים את המדיניות שנכשלה בנושא 'הגנה על ביטוי רגולרי' מהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא regular-Expression-Protection-1:
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
ב-XML של המדיניות בנושא הגנה על ביטויים רגולריים שנכשלו, יש לקבוע אם יש רכיב
<JSONPayload>
עם רכיב צאצא<JSONPath>
שלא מוגדר בו רכיב<Expression>
, או אם הרכיב<Expression>
לא מוגדר לערך כלשהו. אם כן, זו הסיבה לשגיאה.לדוגמה, זוהי מדיניות בנושא 'הגנה על ביטוי רגולרי' שמכילה רכיב
<JSONPayload>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <JSONPayload> <JSONPath> <Expression></Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
מכיוון שיש רכיב
<Expression>
ריק ברכיב<JSONPath>
, הפריסה של שרת ה-proxy ל-API נכשלת.
רזולוציה
יש לוודא ש-regularExpressionProtection כולל רכיב <Expression>
לא ריק וחוקי שמוגדר ברכיב <JSONPath>
. לדוגמה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>