Pemecahan masalah error deployment kebijakan Regular Expression Protection

Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Lihat dokumentasi Apigee Edge.

InvalidRegularExpression

Pesan Kesalahan

Deployment proxy API melalui UI atau API Apigee gagal dengan pesan error ini:

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.

Contoh Pesan Error

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.

Contoh Screenshot Error

Teks error InvalidRegularExpression

Penyebab

Jika ekspresi reguler dalam elemen <Pattern> kebijakan RegularExpressionProtection tidak valid, deployment Proxy API akan gagal.

Diagnosis

  1. Identifikasi nama kebijakan RegularExpressionProtection dari pesan error. Misalnya, dalam error berikut, nama kebijakan RegularExpressionProtection adalah 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. Periksa semua elemen <Pattern> dalam XML kebijakan Perlindungan Ekspresi Reguler yang gagal. Periksa apakah salah satu elemen <Pattern> memiliki ekspresi reguler yang tidak valid. Jika salah satu elemen <Pattern> memiliki ekspresi reguler yang tidak valid, itulah penyebab error.

    Misalnya, kebijakan berikut menentukan nilai Pattern> dari foo){2}, yang dianggap sebagai Ekspresi Reguler Tidak Valid:

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

    Pada contoh di atas, ekspresi reguler yang ditentukan dalam <Pattern> tidak memiliki tanda kurung buka. Oleh karena itu, ini dianggap sebagai ekspresi reguler yang tidak valid. Akibatnya, deployment Proxy API akan gagal.

Resolusi

Pastikan setiap elemen <Pattern> dalam kebijakan RegularExpressionProtection berisi ekspresi reguler yang valid. Anda dapat menelusuri alat ekspresi reguler online atau offline yang berbeda untuk men-debug ekspresi reguler. Untuk memperbaiki contoh kebijakan Perlindungan Ekspresi Reguler yang ditampilkan di atas, tambahkan tanda kurung yang tidak ada:

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

Pesan Kesalahan

Deployment proxy API melalui UI atau API Apigee gagal dengan pesan error ini:

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.

Contoh Pesan Error

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.

Contoh Screenshot Error

Teks error XPathCompilationFailed

Penyebab

Jika awalan atau nilai yang digunakan dalam elemen <XPath> bukan bagian dari namespace yang dideklarasikan dalam kebijakan RegularExpressionProtection, deployment proxy API akan gagal.

Anda dapat menemukan informasi lebih lanjut tentang namespace, XPath, dan awalan di Namespace XML dan pengaruhnya terhadap XPath dan XSLT.

Diagnosis

  1. Identifikasi nama kebijakan RegularExpressionProtection yang menyebabkan error dan Ekspresi XPath yang digunakan. Anda dapat menemukan kedua item ini dalam pesan error.

    Misalnya, dalam error berikut , nama kebijakan adalah Regular-Expression-Protection-1 dan Ekspresi XPath adalah /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. Dalam XML kebijakan Perlindungan Ekspresi Reguler yang gagal, pastikan XPath yang disetel dalam elemen Expression cocok dengan XPath yang diidentifikasi dalam pesan error (langkah #1 di atas).

    Misalnya, kebijakan berikut menentukan XPath sebagai /notapigee:foo/notapigee:bar yang cocok dengan yang ada dalam pesan error:

    <?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. Periksa elemen <Namespaces> dan <Expression> di kebijakan RegularExpressionProtection. Jika <Expression> tertentu yang ditunjukkan dalam pesan error menggunakan awalan atau nilai yang bukan bagian dari namespace yang dideklarasikan dalam kebijakan RegularExpressionProtection, berarti itulah yang menyebabkan error tersebut.

    Perhatikan bahwa <XPath> tertentu menggunakan awalan notapigee dalam contoh kebijakan RegularExpressionProtection:

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

    Namun, awalan notapigee tidak ditentukan dalam elemen <Namespace> mana pun; oleh karena itu, kompilasi <XPath> gagal menyebabkan kegagalan deployment.

Resolusi

Pastikan semua namespace yang digunakan dalam elemen <Expression> pada elemen <XPath> dideklarasikan dalam kebijakan RegularExpressionProtection. Untuk memperbaiki contoh di atas, Anda dapat mengganti awalan notapigee menjadi apigee, yang dideklarasikan dalam 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>
         </Namespaces>
         <XPath>
             <Expression>/apigee:foo/apigee:bar</Expression>
             <Type>nodeset</Type>
             <Pattern>pattern</Pattern>
             <Pattern>pattern2</Pattern>
         </XPath>
     </XMLPayload>
</RegularExpressionProtection>

CannotBeConvertedToNodeset

Pesan Kesalahan

Deployment proxy API melalui UI atau API Apigee gagal dengan pesan error ini:

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.

Contoh Pesan Error

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.

Contoh Screenshot Error

Teks error Tidak DapatDikonversiToNodeset

Penyebab

Jika Kebijakan Ekspresi Reguler memiliki ekspresi <XPath> dengan elemen <Type> yang ditentukan sebagai nodeset, tetapi ekspresi tersebut tidak dapat dikonversi ke nodeset, deployment proxy API akan gagal.

Diagnosis

  1. Identifikasi kebijakan RegularExpressionProtection tempat error terjadi dan Ekspresi XPath yang tidak dapat dikonversi ke nodeset. Anda dapat menemukan kedua item ini dalam pesan error.

    Misalnya, dalam error berikut , nama kebijakan adalah Regular-Expression-Protection-1 dan Ekspresi XPath adalah 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. Dalam XML kebijakan Perlindungan Ekspresi Reguler yang gagal, pastikan XPath yang disetel dalam elemen <Expression> dari elemen <XPath> cocok dengan XPath yang diidentifikasi dalam pesan error (langkah #1 di atas).

    Misalnya, kebijakan berikut menentukan sebagai count(//apigee:foo), yang cocok dengan yang ada dalam pesan error:

    <?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. Periksa nilai yang ditetapkan dalam elemen <Type> di bawah elemen <XPath>. Jika elemen <Type> adalah nodeset, berarti itulah penyebab error.

    Dalam contoh ini, ekspresi XPath adalah count() yang tidak menampilkan satu atau beberapa node. Jadi, deployment Proxy API gagal.

Resolusi

Jika elemen <Type> disetel ke nodeset, pastikan hasil elemen <Expression> yang disetel di <XPath> adalah satu atau beberapa node. Atau, ubah elemen <Type> ke nilai yang lebih sesuai berdasarkan kasus penggunaan Anda.

Untuk memperbaiki contoh di atas, Anda dapat mengubah elemen <Expression> ke nilai lain yang dapat menampilkan node:

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

Pesan Kesalahan

Deployment proxy API melalui UI atau API Apigee gagal dengan pesan error ini:

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.

Contoh Pesan Error

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.

Contoh Screenshot Error

Teks error JSONPathCompilationFailed

Penyebab

Jika elemen <Expression> pada elemen <JSONPath> dari kebijakan Perlindungan Ekspresi Reguler disetel ke ekspresi JSONPath yang tidak valid, deployment proxy API akan gagal.

Diagnosis

  1. Identifikasi nama kebijakan RegularExpressionProtection yang menyebabkan error dan penggunaan Ekspresi JSONPath yang tidak valid. Anda dapat menemukan kedua item ini dalam pesan error.

    Misalnya, dalam error berikut , nama kebijakan adalah Regular-Expression-Protection-1 dan Ekspresi JSONPath adalah $.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. Dalam XML kebijakan Perlindungan Ekspresi Reguler yang gagal, pastikan JSONPath yang disetel dalam elemen Expression cocok dengan JSONPath yang diidentifikasi dalam pesan error (langkah #1 di atas).

    Misalnya, kebijakan berikut menentukan elemen Expression pada elemen <JSONPath> sebagai $.store.book[*.author yang cocok dengan yang ada dalam pesan error:

    <?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. Periksa elemen <Expression> pada elemen <JSONPath> dalam kebijakan. Jika tidak cocok dengan sintaksis JSONPath, ini adalah penyebab error. Pada contoh di atas, tanda kurung siku penutup tidak ada, sehingga membuat ekspresi tidak valid.

    Karena Ekspresi Jalur JSON tidak valid, deployment Proxy API akan gagal.

Resolusi

Pastikan nilai elemen <Expression> di dalam elemen <JSONPath> dalam kebijakan Perlindungan Ekspresi Reguler adalah ekspresi JSONPath yang valid.

Untuk memperbaiki contoh yang ditampilkan di atas, Anda dapat menambahkan tanda kurung siku penutup yang tidak ada ke nilai elemen <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

Pesan Kesalahan

Deployment proxy API melalui UI atau API Apigee gagal dengan pesan error ini:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

Contoh Pesan Error

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

Contoh Screenshot Error

Teks error NothingToEnforce

Penyebab

Jika kebijakan RegularExpressionProtection tidak memiliki elemen <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload>, atau <JSONPayload>, deployment Proxy API akan gagal.

Seperti yang ditunjukkan dalam pesan error, kebijakan RegularExpressionProtection harus menyertakan setidaknya salah satu elemen berikut dalam kebijakan: <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload>, atau <JSONPayload>.

Diagnosis

  1. Identifikasi nama kebijakan RegularExpressionProtection yang menyebabkan error. Anda dapat menemukannya di pesan error. Misalnya, dalam error berikut , nama kebijakan adalah Regular-Expression-Protection-1:

    RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
    
  2. Periksa kebijakan Perlindungan Ekspresi Reguler yang gagal (yang diidentifikasi pada langkah #1 di atas). Jika kebijakan tidak memiliki salah satu elemen berikut: <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload>, atau <JSONPayload>, maka itulah penyebab error.

    Misalnya, kebijakan Perlindungan Ekspresi Reguler berikut tidak memiliki elemen yang disebutkan di atas:

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

    Karena tidak ada elemen wajib yang ada dalam kebijakan Ekstrak Variabel, deployment proxy API gagal.

Resolusi

Pastikan kebijakan RegularExpressionProtection memiliki setidaknya salah satu dari elemen wajib berikut: <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload>, atau <JSONPayload>. Contoh:

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

Pesan Kesalahan

Deployment proxy API melalui UI atau API Apigee gagal dengan pesan error ini:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: No patterns to enforce in payload_name.

Contoh Pesan Error

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.

Contoh Screenshot Error

Teks error NoPatternsToEnforce

Penyebab

Jika salah satu elemen level teratas (<URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload>, atau <JSONPayload>) tidak memiliki elemen <Pattern> yang ditentukan dalam kebijakan RegularExpressionProtection, deployment proxy API akan gagal.

Diagnosis

  1. Identifikasi nama kebijakan RegularExpressionProtection tempat error terjadi dan elemen turunan yang tidak memiliki elemen <Pattern>. Anda dapat menemukan kedua item ini dalam pesan error.

    Misalnya, dalam error berikut, nama kebijakan adalah Regular-Expression-Protection-1 dan elemen turunannya adalah XPath:

    RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
    
  2. Periksa kebijakan Perlindungan Ekspresi Reguler yang gagal dan verifikasi apakah elemen turunan yang diidentifikasi di langkah #1 tidak memiliki elemen <Pattern>. Jika tidak ada elemen <Pattern> di dalamnya, berarti itulah penyebab error.

    Misalnya, kebijakan berikut tidak memiliki elemen <Pattern> di dalam <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>
    

    Karena elemen <XPath> tidak memiliki elemen <Pattern>, deployment Proxy API akan gagal.

Resolusi

Pastikan salah satu elemen <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload>, atau <JSONPayload> memiliki setidaknya satu <Pattern> yang ditentukan. Lihat kebijakan RegularExpressionProtection untuk mengetahui informasi tentang cara menentukan elemen dengan benar.

Untuk memperbaiki contoh di atas, kita dapat menambahkan elemen <Pattern> ke elemen <XPath> di bawah <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

Pesan Kesalahan

Deployment proxy API melalui UI atau API Apigee gagal dengan pesan error ini:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Non-empty prefix prefix_name cannot be mapped to empty uri.

Contoh Pesan Error

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.

Contoh Screenshot Error

Teks error NONEmptyPrefixMappedToEmptyURI

Penyebab

Error ini terjadi jika kebijakan RegularExpressionProtection memiliki awalan yang ditentukan dalam elemen <Namespace> pada elemen <XMLPayload>, tetapi tidak ada URI yang ditentukan.

Diagnosis

  1. Identifikasi kebijakan RegularExpressionProtection tempat error terjadi dan nama awalan yang tidak dipetakan ke URI. Anda dapat menemukan kedua item ini dalam pesan error.

    Misalnya, dalam error berikut, nama kebijakan adalah Perlindungan Ekspresi Reguler-1 dan awalannya adalah apigee:

    RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. Dalam XML kebijakan Perlindungan Ekspresi Reguler yang gagal, pastikan nama awalan yang ditetapkan di elemen <Namespace> pada elemen <XMLPayload> cocok dengan nama awalan yang diidentifikasi dalam pesan error (langkah #1 di atas).

    Misalnya, kebijakan berikut menentukan awalan bernama apigee dalam elemen <Namespace> , yang cocok dengan yang ada dalam pesan error:

    <?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. Validasi apakah elemen <Namespace> dengan awalan tertentu yang diidentifikasi di langkah #2 memiliki URI yang valid. Jika URI tidak ada, itulah penyebab error.

    Pada contoh kebijakan Perlindungan Ekspresi Reguler yang ditampilkan di atas, perhatikan bahwa tidak ada URI yang sesuai dengan elemen <Namespace> dengan awalan apigee; sehingga Anda mendapatkan error:

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

Resolusi

Pastikan semua elemen <Namespace> yang ditentukan dengan awalan memiliki URI yang sesuai dalam kebijakan Ekstrak Variabel. Contoh:

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

Pesan Kesalahan

Deployment proxy API melalui UI atau API Apigee gagal dengan pesan error ini:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Duplicate prefix prefix_name.

Contoh Pesan Error

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.

Contoh Screenshot Error

Teks error DuplicatePrefix

Penyebab

Error ini terjadi jika kebijakan RegularExpressionProtection memiliki awalan yang sama yang ditentukan lebih dari sekali dalam elemen <Namespace> pada elemen <XMLPayload>.

Misalnya, error ini terjadi karena awalan apigee ditentukan dua kali seperti ditunjukkan di bawah:

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

Diagnosis

  1. Identifikasi kebijakan RegularExpressionProtection tempat error terjadi dan nama awalannya. Anda dapat menemukan kedua item ini dalam pesan error.

    Misalnya, dalam error berikut, nama kebijakan adalah Perlindungan Ekspresi Reguler-1 dan awalannya adalah apigee:

    RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
    
  2. Dalam XML kebijakan Perlindungan Ekspresi Reguler yang gagal, pastikan nama awalan yang ditetapkan di elemen <Namespace> pada elemen <XMLPayload> cocok dengan nama awalan yang diidentifikasi dalam pesan error (langkah #1 di atas).

    Misalnya, kebijakan berikut menentukan awalan bernama apigee dalam elemen <Namespace> , yang cocok dengan yang ada dalam pesan error:

    <?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. Tentukan apakah elemen <Namespace> dengan awalan tertentu, yang diidentifikasi pada langkah #2 telah ditentukan lebih dari sekali. Jika ditentukan lebih dari sekali, maka itulah penyebab error.

    Pada contoh kebijakan Perlindungan Ekspresi Reguler yang ditampilkan di atas, perhatikan bahwa elemen <Namespace> dengan awalan apigee telah ditentukan dua kali; sehingga Anda mendapatkan error:

    Duplicate prefix apigee.
    

Resolusi

Pastikan hanya ada satu definisi untuk setiap awalan di elemen <Namespace> dalam kebijakan RegularExpressionProtection. Contoh:

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

Pesan Kesalahan

Deployment proxy API melalui UI atau API Apigee gagal dengan pesan error ini:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Empty XPath expression.

Contoh Pesan Error

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

Contoh Screenshot Error

Teks error EmptyXPathExpression

Penyebab

Jika kebijakan RegularExpressionProtection tidak memiliki elemen <Expression> yang disetel dalam elemen <XPath>, deployment proxy API akan gagal.

Diagnosis

  1. Identifikasi kebijakan Perlindungan Ekspresi Reguler yang gagal dari pesan error. Misalnya, dalam error berikut, nama kebijakan adalah Regular-Expression-Protection-1:

    RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
    
  2. Dalam XML kebijakan Perlindungan Ekspresi Reguler yang gagal, tentukan apakah ada elemen <XMLPayload> dengan elemen turunan <XPath> yang tidak memiliki elemen <Expression> yang ditetapkan di dalamnya, atau elemen <Expression> tidak ditetapkan ke nilai apa pun. Jika ya, maka itulah penyebab error.

    Misalnya, berikut adalah kebijakan Perlindungan Ekspresi Reguler yang memiliki elemen <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>
    

    Karena ada elemen <Expression> kosong dalam elemen <XPath>, deployment Proxy API akan gagal.

Resolusi

Pastikan kebijakan RegularExpressionProtection memiliki elemen <Expression> yang tidak kosong dan valid yang ditentukan di elemen <XPath>. Contoh:

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

Pesan Kesalahan

Deployment proxy API melalui UI atau API Apigee gagal dengan pesan error ini:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Empty JSONPath expression.

Contoh Pesan Error

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

Contoh Screenshot Error

Teks error EmptyJSONPathExpression

Penyebab

Jika kebijakan RegularExpressionProtection tidak memiliki elemen <Expression> yang disetel dalam elemen <JSONPath>, deployment proxy API akan gagal.

Diagnosis

  1. Identifikasi kebijakan Perlindungan Ekspresi Reguler yang gagal dari pesan error. Misalnya, dalam error berikut, nama kebijakan adalah Regular-Expression-Protection-1:

    Error Saving Revision 1
    RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
    
  2. Dalam XML kebijakan Perlindungan Ekspresi Reguler yang gagal, tentukan apakah ada elemen <JSONPayload> dengan elemen turunan <JSONPath> yang tidak memiliki elemen <Expression> yang ditetapkan di dalamnya, atau elemen <Expression> tidak ditetapkan ke nilai apa pun. Jika ya, maka itulah penyebab error.

    Misalnya, berikut adalah kebijakan Perlindungan Ekspresi Reguler yang memiliki elemen <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>
    

    Karena ada elemen <Expression> kosong dalam elemen <JSONPath>, deployment Proxy API akan gagal.

Resolusi

Pastikan kebijakan RegularExpressionProtection memiliki elemen <Expression> yang tidak kosong dan valid yang ditentukan di elemen <JSONPath>. Contoh:

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