פתרון בעיות שקשורות לפריסת מדיניות הגנה על ביטויים רגולריים

אתם צופים במסמכי התיעוד של 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.

דוגמה לצילום מסך של שגיאה

טקסט השגיאה InvalidRegularExpression

סיבה

אם הביטוי הרגולרי ברכיב <Pattern> של מדיניות RegularExpressionProtection לא תקין, פריסת שרת ה-API Proxy תיכשל.

אבחון

  1. מזהים את השם של מדיניות 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.
  2. בודקים את כל רכיבי <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> חסר סוגר פותח. לכן הוא נחשב לביטוי רגולרי לא תקין. לכן הפריסה של שרת ה-API Proxy נכשלת.

רזולוציה

מוודאים שכל רכיב <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.

דוגמה לצילום מסך של שגיאה

טקסט השגיאה XPathCompilationFailed

סיבה

אם הקידומת או הערך שמשמשים ברכיב <XPath> לא שייכים לאף אחד ממרחבי השמות המוצהרים במדיניות RegularExpressionProtection, פריסת proxy ל-API תיכשל.

מידע נוסף על מרחבי שמות, XPath וקידומות זמין במאמר XML Namespaces and How They Affect XPath and XSLT (מרחבי שמות של XML וההשפעה שלהם על XPath ו-XSLT).

אבחון

  1. מזהים את השם של מדיניות RegularExpressionProtection שבה אירעה השגיאה ואת ביטוי ה-XPath שבו נעשה שימוש. שני הפריטים האלה מופיעים בהודעת השגיאה.

    לדוגמה, בשגיאה הבאה , שם המדיניות הוא 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.
  2. ב-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>
  3. בודקים את הרכיבים <Namespaces> ו-<Expression> במדיניות RegularExpressionProtection. אם <Expression> הספציפי שמצוין בהודעת השגיאה משתמש בקידומת או בערך שלא נכללים במרחבי השמות שהוצהרו במדיניות RegularExpressionProtection, זו הסיבה לשגיאה.

    שימו לב שהמאפיין הספציפי <XPath> משתמש בקידומת notapigee בדוגמה למדיניות RegularExpressionProtection:

    <Expression>/notapigee:foo/notapigee:bar</Expression>

    עם זאת, הקידומת notapigee לא מוגדרת באף אחד מרכיבי <Namespace>, ולכן הקומפילציה של <XPath> נכשלת ופריסת ה-VM נכשלת.

רזולוציה

מוודאים שכל מרחבי השמות שנעשה בהם שימוש ברכיבי <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.

דוגמה לצילום מסך של שגיאה

טקסט השגיאה CannotBeConvertedToNodeset

סיבה

אם במדיניות הביטויים הרגולריים יש ביטוי <XPath> שבו רכיב <Type> מוגדר כ-nodeset, אבל אי אפשר להמיר את הביטוי ל-nodeset, הפריסה של proxy ל-API תיכשל.

אבחון

  1. מזהים את מדיניות RegularExpressionProtection שבה התרחשה השגיאה ואת ביטוי ה-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.
  2. ב-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>
  3. בודקים את הערך שמוגדר באלמנט <Type> מתחת לאלמנט <XPath>. אם הרכיב <Type> הוא nodeset, זו הסיבה לשגיאה.

    בדוגמה הזו, ביטוי ה-XPath הוא count() שלא מחזיר צומת אחד או יותר. לכן, הפריסה של שרת ה-proxy של ה-API נכשלת.

רזולוציה

אם הרכיב <Type> מוגדר כ-nodeset, צריך לוודא שהתוצאה של הרכיב <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.

דוגמה לצילום מסך של שגיאה

טקסט השגיאה JSONPathCompilationFailed

סיבה

אם הרכיב <Expression> שמתחת לרכיב <JSONPath> במדיניות הגנה על ביטויים רגולריים מוגדר כביטוי JSONPath לא תקין, ה-Deployment (פריסה) של proxy ל-API ייכשל.

אבחון

  1. מזהים את השם של מדיניות RegularExpressionProtection שבה אירעה השגיאה ושבה נעשה שימוש בביטוי JSONPath לא תקין. שני הפריטים האלה מופיעים בהודעת השגיאה.

    לדוגמה, בשגיאה הבאה , שם המדיניות הוא 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.
  2. ב-XML של מדיניות ההגנה על ביטויים רגולריים שנכשלה, מוודאים ש-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>
  3. בודקים את הרכיב <Expression> בקטע <JSONPath> במדיניות. אם הוא לא תואם לתחביר של JSONPath, זו הסיבה לשגיאה. בדוגמה שלמעלה, חסר הסוגר המרובע הסוגר, ולכן הביטוי לא תקין.

    מכיוון שביטוי JSON Path לא תקין, פריסת ה-API Proxy נכשלת.

רזולוציה

צריך לוודא שהערך של רכיב <Expression> בתוך רכיב <JSONPath> במדיניות של הגנה על ביטויים רגולריים הוא ביטוי 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.

דוגמה לצילום מסך של שגיאה

טקסט השגיאה NothingToEnforce

סיבה

אם מדיניות RegularExpressionProtection לא מכילה אף אחד מהרכיבים <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> או <JSONPayload>, הפריסה של API Proxy תיכשל.

כפי שמצוין בהודעת השגיאה, במדיניות RegularExpressionProtection צריך לכלול לפחות אחד מהרכיבים הבאים: <URIPath>,‏ <QueryParam>,‏ <Header>,‏ <FormParam>,‏ <XMLPayload> או <JSONPayload>.

אבחון

  1. מזהים את השם של מדיניות RegularExpressionProtection שבה התרחשה השגיאה. הוא מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה , שם המדיניות הוא Regular-Expression-Protection-1:

    RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
  2. בודקים את המדיניות בנושא הגנה על ביטויים רגולריים שנכשלה (שזוהתה בשלב 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>

    מכיוון שאף אחד מהרכיבים הנדרשים לא מופיע במדיניות Extract Variables, הפריסה של proxy ל-API נכשלת.

רזולוציה

מוודאים שלמדיניות RegularExpressionProtection יש לפחות אחד מהרכיבים הבאים: <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.

דוגמה לצילום מסך של שגיאה

טקסט השגיאה NoPatternsToEnforce

סיבה

אם לא מוגדר רכיב <Pattern> באף אחד מהרכיבים ברמה העליונה (<URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> או <JSONPayload>) של מדיניות RegularExpressionProtection, ה-Deployment (פריסה) של proxy ל-API תיכשל.

אבחון

  1. מזהים את השם של מדיניות RegularExpressionProtection שבה התרחשה השגיאה ואת רכיב הצאצא שאין לו את הרכיב <Pattern>. שני הפריטים האלה מופיעים בהודעת השגיאה.

    לדוגמה, בשגיאה הבאה, שם המדיניות הוא Regular-Expression-Protection-1 ורכיב הצאצא הוא XPath:

    RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
  2. בודקים את מדיניות ההגנה על ביטויים רגולריים שנכשלה ומוודאים שלרכיב המשני שזוהה בשלב 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>, פריסת ה-API Proxy נכשלת.

רזולוציה

מוודאים שלפחות אחד מהרכיבים <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.

דוגמה לצילום מסך של שגיאה

טקסט השגיאה NONEmptyPrefixMappedToEmptyURI

סיבה

השגיאה הזו מתרחשת אם במדיניות RegularExpressionProtection מוגדר קידומת ברכיב <Namespace> שמתחת לרכיב <XMLPayload>, אבל לא מוגדר URI.

אבחון

  1. מזהים את מדיניות RegularExpressionProtection שבה התרחשה השגיאה ואת שם הקידומת שלא ממופה ל-URI. שני הפריטים האלה מופיעים בהודעת השגיאה.

    לדוגמה, בשגיאה הבאה, שם המדיניות הוא Regular Expression Protection-1 והקידומת היא apigee:

    RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
  2. בקובץ ה-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>
  3. בודקים אם לרכיב <Namespace> עם הקידומת הספציפית שזוהתה בשלב 2 יש URI תקין. אם ה-URI חסר, זו הסיבה לשגיאה.

    בדוגמה של מדיניות ההגנה על ביטויים רגולריים שמוצגת למעלה, שימו לב שאין URI שמתאים לרכיב <Namespace> עם הקידומת apigee. לכן, מוצגת השגיאה:

    Non-empty prefix apigee cannot be mapped to empty uri.

רזולוציה

מוודאים שלכל רכיבי <Namespace> שהוגדרו עם קידומת יש URI תואם במדיניות Extract Variables. לדוגמה:

<?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.

דוגמה לצילום מסך של שגיאה

טקסט השגיאה DuplicatePrefix

סיבה

השגיאה הזו מתרחשת אם מדיניות RegularExpressionProtection כוללת את אותו קידומת שמוגדרת יותר מפעם אחת ברכיב <Namespace> מתחת לרכיב <XMLPayload>.

לדוגמה, השגיאה הזו מתרחשת כי הקידומת apigee מוגדרת פעמיים, כמו שמוצג בהמשך:

<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>

אבחון

  1. מזהים את מדיניות RegularExpressionProtection שבה התרחשה השגיאה ואת שם הקידומת. שני הפריטים האלה מופיעים בהודעת השגיאה.

    לדוגמה, בשגיאה הבאה, שם המדיניות הוא Regular Expression Protection-1 והקידומת היא apigee:

    RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
  2. בקובץ ה-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>
  3. בודקים אם הרכיב <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.

דוגמה לצילום מסך של שגיאה

טקסט השגיאה EmptyXPathExpression

סיבה

אם למדיניות RegularExpressionProtection לא מוגדר רכיב <Expression> בתוך הרכיב <XPath>, פריסת proxy ל-API תיכשל.

אבחון

  1. מזהים את מדיניות ההגנה על ביטויים רגולריים שנכשלה מתוך הודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Regular-Expression-Protection-1:

    RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
  2. בקובץ ה-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>, הפריסה של ה-API Proxy נכשלת.

רזולוציה

מוודאים שלמדיניות 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.

דוגמה לצילום מסך של שגיאה

EmptyJSONPathExpression error text

סיבה

אם למדיניות RegularExpressionProtection לא מוגדר רכיב <Expression> בתוך הרכיב <JSONPath>, פריסת proxy ל-API תיכשל.

אבחון

  1. מזהים את מדיניות ההגנה על ביטויים רגולריים שנכשלה מתוך הודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Regular-Expression-Protection-1:

    Error Saving Revision 1
    RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
  2. בקובץ ה-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>, הפריסה של ה-API Proxy נכשלת.

רזולוציה

מוודאים שלמדיניות 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>