عیب یابی خطای استقرار خط مشی حفاظت از بیان منظم

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

عبارت منظم نامعتبر

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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 را از پیام خطا تشخیص دهید. برای مثال، در خطای زیر، نام سیاست 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 مربوط به محافظت از عبارات منظم (Regular Expression Protection policy) که با شکست مواجه شده است، بررسی کنید. بررسی کنید که آیا هر یک از عناصر <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

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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 نباشد، استقرار پروکسی API با شکست مواجه می‌شود.

می‌توانید اطلاعات بیشتری در مورد فضاهای نام، XPath و پیشوند را در بخش فضاهای نام XML و نحوه تأثیر آنها بر XPath و XSLT بیابید.

تشخیص

  1. نام خط‌مشی 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.
  2. در فایل XML مربوط به خطای Regular Expression Protection policy، بررسی کنید که XPath تنظیم شده در عنصر Expression با XPath شناسایی شده در پیام خطا (مرحله ۱ در بالا) مطابقت داشته باشد.

    برای مثال، سیاست زیر 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 policy استفاده می‌کند:

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

CannotBeConvertToNodeset

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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 تبدیل شود، در این صورت پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

تشخیص

  1. خط‌مشی RegularExpressionProtection که خطا در آن رخ داده و عبارت XPath Expression که قابل تبدیل به 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 مربوط به خطای Regular Expression Protection policy، بررسی کنید که XPath تنظیم شده در عنصر <Expression> از عنصر <XPath> با XPath شناسایی شده در پیام خطا (مرحله ۱ بالا) مطابقت داشته باشد.

    برای مثال، سیاست زیر مقدار as 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() است که یک یا چند گره را برنمی‌گرداند. بنابراین، پیاده‌سازی API Proxy با شکست مواجه می‌شود.

وضوح تصویر

اگر عنصر <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>

کامپایل JSONPathFailed

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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 نامعتبر تنظیم شود، پیاده‌سازی پروکسی 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 مربوط به خطای Regular Expression Protection policy، بررسی کنید که JSONPath تنظیم شده در عنصر Expression با JSONPath شناسایی شده در پیام خطا (مرحله ۱ در بالا) مطابقت داشته باشد.

    برای مثال، سیاست زیر عنصر 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 نامعتبر است، پیاده‌سازی 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>

هیچ چیز برای اعمال فشار

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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. سیاست محافظت از عبارات منظم (Regular Expression Protection) ناموفق (که در مرحله ۱ بالا مشخص شد) را بررسی کنید. اگر این سیاست حتی یکی از عناصر زیر را نداشته باشد: <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 وجود ندارند، پیاده‌سازی پروکسی 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

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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

علت

اگر هر یک از عناصر سطح بالا ( <URIPath> ، <QueryParam> ، <Header> ، <FormParam> ، <XMLPayload> یا <JSONPayload> ) عنصر <Pattern> تعریف شده در سیاست RegularExpressionProtection را نداشته باشند، استقرار پروکسی API با شکست مواجه می‌شود.

تشخیص

  1. نام سیاست RegularExpressionProtection که خطا در آن رخ داده است و عنصر فرزندی که عنصر <Pattern> را ندارد، شناسایی کنید. می‌توانید هر دوی این موارد را در پیام خطا پیدا کنید.

    برای مثال، در خطای زیر، نام سیاست Regular-Expression-Protection-1 و عنصر فرزند XPath:

    RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
  2. سیاست محافظت از عبارات منظم (Regular Expression Protection) ناموفق را بررسی کنید و بررسی کنید که آیا عنصر فرزند شناسایی‌شده در مرحله‌ی ۱، عنصر <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

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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 مربوط به خطای Regular Expression Protection policy، بررسی کنید که نام پیشوند تنظیم شده در عنصر <Namespace> زیر عنصر <XMLPayload> با نام پیشوند شناسایی شده در پیام خطا (مرحله ۱ در بالا) مطابقت داشته باشد.

    برای مثال، سیاست زیر پیشوندی به نام 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> با پیشوند خاص شناسایی شده در مرحله ۲، دارای یک 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>

پیشوند تکراری

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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>

تشخیص

  1. خط‌مشی RegularExpressionProtection که خطا در آن رخ داده و نام پیشوند را مشخص کنید. می‌توانید هر دوی این موارد را در پیام خطا پیدا کنید.

    برای مثال، در خطای زیر، نام سیاست Regular Expression Protection-1 و پیشوند apigee است:

    RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
  2. در فایل XML مربوط به خطای Regular Expression Protection policy، بررسی کنید که نام پیشوند تنظیم شده در عنصر <Namespace> زیر عنصر <XMLPayload> با نام پیشوند شناسایی شده در پیام خطا (مرحله ۱ در بالا) مطابقت داشته باشد.

    برای مثال، سیاست زیر پیشوندی به نام 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> با پیشوند خاص، که در مرحله ۲ مشخص شد، بیش از یک بار تعریف شده است یا خیر. اگر بیش از یک بار تعریف شده باشد، علت خطا همین است.

    در مثال سیاست حفاظت از عبارات منظم که در بالا نشان داده شده است، توجه کنید که عنصر <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>

عبارت EmptyXPath

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

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> تنظیم نکرده باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

تشخیص

  1. از روی پیام خطا، سیاست محافظت از عبارات منظم (Regular Expression Protection) ناموفق را شناسایی کنید. برای مثال، در خطای زیر، نام سیاست، Regular-Expression-Protection-1 است:

    RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
  2. در XML مربوط به سیاست محافظت از عبارات منظم (Regular Expression Protection policy)، بررسی کنید که آیا عنصر <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>

عبارت مسیر JSON خالی

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت Edge با این پیام خطا مواجه می‌شود:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Empty JSONPath expression.

مثال پیام خطا

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.

مثال تصویر خطا

متن خطا EmptyJSONPathExpression

علت

اگر سیاست RegularExpressionProtection هیچ عنصر <Expression> را در عنصر <JSONPath> تنظیم نکرده باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

تشخیص

  1. از روی پیام خطا، سیاست محافظت از عبارات منظم (Regular Expression Protection) ناموفق را شناسایی کنید. برای مثال، در خطای زیر، نام سیاست، Regular-Expression-Protection-1 است:

    Error Saving Revision 1
    RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
  2. در XML مربوط به سیاست محافظت از عبارات منظم (Regular Expression Protection policy)، بررسی کنید که آیا عنصر <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>