การแก้ปัญหาข้อผิดพลาดในการทำให้นโยบายการป้องกันนิพจน์ทั่วไปใช้งานได้

คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบเกี่ยวกับ Apigee X
ข้อมูล

InvalidRegularExpression

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ 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 ใช้งานได้จะล้มเหลว

การวินิจฉัย

  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 ของนโยบายการป้องกันนิพจน์ทั่วไปที่ล้มเหลว ตรวจสอบว่าองค์ประกอบ <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 ล้มเหลว

ความละเอียด

ตรวจสอบว่าองค์ประกอบ <Pattern> แต่ละรายการในนโยบาย 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>
        <URIPath>
            <Pattern>(foo){2}</Pattern>
        </URIPath>
        <Source>request</Source>
    </RegularExpressionProtection>

XPathCompilationFailed

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ 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 การทำให้พร็อกซี API ใช้งานได้จะล้มเหลว

ดูข้อมูลเพิ่มเติมเกี่ยวกับเนมสเปซ, XPath และคำนำหน้าได้ในเนมสเปซ XML และผลกระทบที่มีต่อ XPath และ XSLT

การวินิจฉัย

  1. ระบุชื่อนโยบาย RegularExpressionProtection ที่ทำให้เกิดข้อผิดพลาดและนิพจน์ XPath ที่ใช้ ซึ่งคุณจะเห็นทั้ง 2 รายการนี้ในข้อความแสดงข้อผิดพลาด

    เช่น ในข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ 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> ในนโยบายการป้องกันนิพจน์ทั่วไป หาก <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

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ 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.

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

ข้อความแสดงข้อผิดพลาด ไม่สามารถแปลงToNodeset

สาเหตุ

หากนโยบายนิพจน์ทั่วไปมีนิพจน์ <XPath> ที่กําหนดองค์ประกอบ <Type> เป็น nodeset แต่ไม่สามารถแปลงนิพจน์เป็น nodeset ได้ การติดตั้งใช้งานพร็อกซี API จะดำเนินการไม่สำเร็จ

การวินิจฉัย

  1. ระบุนโยบาย RegularExpressionProtection ที่ทำให้เกิดข้อผิดพลาดและนิพจน์ XPath ที่แปลงเป็นชุดโหนดไม่ได้ คุณจะเห็นทั้ง 2 รายการนี้ในข้อความแสดงข้อผิดพลาด

    เช่น ในข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ 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 ด้านบน)

    เช่น นโยบายต่อไปนี้ระบุ 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() ซึ่งไม่แสดงผลโหนดอย่างน้อย 1 รายการ ด้วยเหตุนี้ การติดตั้งใช้งานพร็อกซี API จึงล้มเหลว

ความละเอียด

หากตั้งค่าองค์ประกอบ <Type> เป็น nodeset ให้ตรวจสอบว่าผลลัพธ์ขององค์ประกอบ <Expression> ที่ตั้งค่าไว้ใน <XPath> เป็นโหนดอย่างน้อย 1 โหนด หรือเปลี่ยนองค์ประกอบ <Type> เป็นค่าที่เหมาะสมกว่าตาม Use Case ของคุณ

หากต้องการแก้ไขตัวอย่างข้างต้น คุณสามารถเปลี่ยนองค์ประกอบ <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

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ 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 ที่ไม่ถูกต้อง การติดตั้งใช้งานพร็อกซี API จะดำเนินการไม่สำเร็จ

การวินิจฉัย

  1. ระบุชื่อนโยบาย RegularExpressionProtection ที่ทำให้เกิดข้อผิดพลาดและมีการใช้นิพจน์ JSONPath ที่ไม่ถูกต้อง คุณจะเห็นทั้ง 2 รายการนี้ในข้อความแสดงข้อผิดพลาด

    เช่น ในข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ 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 ไม่ถูกต้อง การทำให้ Proxy API ใช้งานได้จึงดำเนินการไม่สำเร็จ

ความละเอียด

ตรวจสอบว่าค่าขององค์ประกอบ <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

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ 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 ต้องมีองค์ประกอบต่อไปนี้อย่างน้อย 1 รายการในนโยบาย <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>
    

    เนื่องจากไม่มีองค์ประกอบที่จําเป็นอยู่ในนโยบายการดึงข้อมูลตัวแปร การติดตั้งใช้งานพร็อกซี API จึงล้มเหลว

ความละเอียด

ตรวจสอบว่านโยบาย regularExpressionProtection มีองค์ประกอบที่จำเป็นอย่างน้อย 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>
    <JSONPayload>
        <JSONPath>
            <Expression>$.store.book[*].author</Expression>
            <Pattern>REGEX PATTERN</Pattern>
            <Pattern>REGEX PATTERN</Pattern>
        </JSONPath>
    </JSONPayload>
</RegularExpressionProtection>

NoPatternsToEnforce

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ 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

สาเหตุ

หากองค์ประกอบระดับบนสุด (<URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> หรือ <JSONPayload>) ใดไม่มีการกำหนดองค์ประกอบ <Pattern> ในนโยบาย RegularExpressionProtection การติดตั้งใช้งานพร็อกซี API จะดำเนินการไม่สำเร็จ

การวินิจฉัย

  1. ระบุชื่อนโยบาย RegularExpressionProtection ที่ทำให้เกิดข้อผิดพลาดและองค์ประกอบย่อยที่ไม่มีองค์ประกอบ <Pattern> คุณจะเห็นทั้ง 2 รายการนี้ในข้อความแสดงข้อผิดพลาด

    เช่น ในข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ 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> การติดตั้งใช้งาน Proxy API จึงดำเนินการไม่สำเร็จ

ความละเอียด

ตรวจสอบว่าองค์ประกอบ <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> หรือ <JSONPayload> มีการระบุ <Pattern> อย่างน้อย 1 รายการ ดูข้อมูลเกี่ยวกับวิธีระบุองค์ประกอบอย่างถูกต้องได้ที่นโยบาย 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 UI หรือ 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 คุณจะเห็นทั้ง 2 รายการนี้ในข้อความแสดงข้อผิดพลาด

    ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ Mean 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 ดังกล่าวเป็นสาเหตุของข้อผิดพลาด

    ในตัวอย่างนโยบายการป้องกันนิพจน์ทั่วไปที่แสดงด้านบน ให้สังเกตว่าไม่มี 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

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ 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 มีการกำหนดคำนำหน้าเดียวกันมากกว่า 1 ครั้งในองค์ประกอบ <Namespace> ภายใต้องค์ประกอบ <XMLPayload>

ตัวอย่างเช่น ข้อผิดพลาดนี้เกิดขึ้นเนื่องจากมีการกําหนดคํานําหน้า apigee 2 ครั้งดังที่แสดงด้านล่าง

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

การวินิจฉัย

  1. ระบุนโยบาย RegularExpressionProtection ที่ทำให้เกิดข้อผิดพลาดและชื่อของคำนำหน้า คุณจะเห็นทั้ง 2 รายการนี้ในข้อความแสดงข้อผิดพลาด

    ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ Mean 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 ได้รับการกําหนดไว้มากกว่า 1 ครั้งหรือไม่ หากมีการกําหนดมากกว่า 1 ครั้ง แสดงว่านี่อาจเป็นสาเหตุของข้อผิดพลาด

    ในตัวอย่างนโยบายการป้องกันนิพจน์ทั่วไปที่แสดงด้านบน ให้สังเกตว่าองค์ประกอบ <Namespace> ที่มี Apigee เป็นคำนำหน้าได้รับการกำหนด 2 ครั้ง ดังนั้นคุณจะได้รับข้อผิดพลาด

    Duplicate prefix apigee.
    

ความละเอียด

ตรวจสอบว่ามีเพียง 1 คำจำกัดความสำหรับคำนำหน้าแต่ละรายการในองค์ประกอบ <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

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ 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> การติดตั้งใช้งานพร็อกซี 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> จึงทำให้การติดตั้งใช้งาน 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

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ 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

สาเหตุ

หากนโยบาย RegularExpressionProtection ไม่มีการตั้งค่าองค์ประกอบ <Expression> ภายในองค์ประกอบ <JSONPath> การติดตั้งใช้งานพร็อกซี 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> จึงทำให้การติดตั้งใช้งาน 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>