Pemecahan masalah error runtime Perlindungan Ancaman JSON

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

ExecutionFailed

Kode Error

steps.jsonthreatprotection.ExecutionFailed

Isi respons error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]: error_description
          at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Jenis Error dan kemungkinan penyebabnya

Kebijakan JSONThreatProtection dapat menampilkan berbagai jenis error ExecutionFailed. Tabel di bawah ini mencantumkan berbagai jenis error dan kemungkinan penyebabnya:

Jenis error Penyebab
Panjang nama entri objek terlampaui Panjang string maksimum yang diizinkan dalam nama entri objek terlampaui.
Jumlah entri objek terlampaui Jumlah entri maksimum yang diizinkan dalam sebuah objek terlampaui.
Jumlah elemen array terlampaui Jumlah maksimum elemen yang diizinkan dalam array terlampaui.
Kedalaman container terlampaui Kedalaman bertingkat maksimum yang diizinkan terlampaui.
Panjang nilai string terlampaui Panjang maksimum yang diizinkan untuk nilai string terlampaui.
Objek JSON tidak valid Payload JSON input tidak valid.

Melebihi panjang nama entri objek

Isi respons error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded object entry name length at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Contoh isi respons Error

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded object entry name length at line 2",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Penyebab

Error ini terjadi jika payload pesan input yang ditentukan oleh elemen <Source> berisi objek JSON dengan nama properti yang melebihi panjang maksimum yang ditentukan dalam elemen <ObjectEntryNameLength>.

Misalnya, jika elemen <ObjectEntryNameLength> ditetapkan sebagai 5 dalam kebijakan, tetapi payload pesan input memiliki properti JSON yang namanya melebihi 5 karakter, error ini akan ditampilkan.

Diagnosis

  1. Periksa pesan error untuk mengidentifikasi nama kebijakan JSONThreatProtection dan nomor baris tempat nama entri panjang muncul. Misalnya, dalam pesan error berikut, nama kebijakan JSONThreatProtection adalah JSON-Threat-Protection-1 dan nomor baris dalam payload adalah 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    
  2. Periksa kebijakan yang Anda identifikasi pada Langkah 1, dan catat nilai yang ditentukan dalam elemen <ObjectEntryNameLength>.

    Misalnya, dalam kebijakan JSONThreatProtection berikut, <ObjectEntryNameLength> disetel ke 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>5</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Periksa nomor baris spesifik (diidentifikasi pada Langkah 1) payload input dan periksa apakah panjang nama objek lebih besar dari nilai yang ditentukan dalam elemen <ObjectEntryNameLength> (yang diidentifikasi pada Langkah 2). Jika panjang nama objek melebihi angka tersebut, maka itulah penyebab error.

    Berikut adalah contoh payload input:

    {
       "number" : 500,
       "string" : "text"
    }
    

    Payload JSON yang ditunjukkan di atas memiliki properti bernama number di baris 2 yang memiliki 6 karakter (panjang namanya adalah 6). Karena panjang nama objek lebih besar dari 5 (nilai yang ditentukan untuk elemen <ObjectEntryNameLength>), Anda mendapatkan error berikut:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    

Resolusi

Jika kebijakan JSONThreatProtection ditujukan untuk melindungi dari payload dengan nama entri objek yang melebihi nilai yang ditentukan, pesan error akan muncul. Dalam hal ini, Anda tidak perlu melakukan tindakan tambahan.

Namun, jika Anda menentukan bahwa nama entri objek yang lebih panjang dapat ditentukan dalam payload tanpa konsekuensi apa pun, ubah <ObjectEntryNameLength> ke nilai yang sesuai berdasarkan persyaratan Anda.

Misalnya, jika Anda merasa dapat mengizinkan nama objek dengan panjang hingga 10 karakter, ubah kebijakan JSONThreatProtection sebagai berikut:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>10</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Melebihi jumlah entri objek

Isi respons error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded object entry count at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Contoh isi respons Error

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded object entry count at line 7",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Penyebab

Error ini terjadi jika payload pesan input yang ditentukan oleh elemen <Source> berisi objek JSON yang berisi lebih banyak entri (properti) daripada nilai yang ditentukan dalam elemen <ObjectEntryCount> kebijakan.

Misalnya, jika elemen <ObjectEntryCount> adalah 5, tetapi payload JSON input memiliki lebih dari 5 entri, error ini akan ditampilkan.

Diagnosis

  1. Periksa pesan error untuk mengidentifikasi nama kebijakan JSONThreatProtection dan nomor baris yang melebihi jumlah entri. Misalnya, dalam pesan error berikut, nama kebijakan adalah JSON-Threat-Protection-1 dan nomor baris dalam payload adalah 7:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count
    at line 7
    
  2. Catat nilai yang ditentukan dalam elemen <ObjectEntryCount> kebijakan (yang diidentifikasi di Langkah 1).

    Dalam contoh kebijakan berikut, <ObjectEntryCount> disetel ke 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Periksa nomor baris spesifik (diidentifikasi pada Langkah 1) payload input dan periksa apakah jumlah entity dalam payload lebih besar dari nilai yang ditentukan untuk elemen <ObjectEntryCount> (yang diidentifikasi di Langkah 2). Jika jumlah objek melebihi jumlah entri objek, maka itulah penyebab error.

    Berikut adalah contoh payload input:

    {
    "name" : "John",
    "id" : 234687,
    "age" : 31,
    "city" : "New York",
    "country" : "USA",
    "company" : "Google"
    }
    

    Dalam payload JSON yang ditunjukkan di atas, entri ke-6 terjadi di baris #7 (perusahaan). Karena jumlah entri objek dalam payload JSON input lebih besar dari 5 (nilai yang ditentukan untuk elemen <ObjectEntryCount>), Anda mendapatkan error berikut:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at
    line 7
    

Resolusi

Jika kebijakan JSONThreatProtection ditujukan untuk melindungi dari payload dengan sejumlah entri objek yang melebihi batas tertentu, pesan error akan muncul. Dalam hal ini, Anda tidak perlu melakukan tindakan tambahan.

Namun, jika Anda menentukan bahwa lebih banyak entri objek yang dapat disertakan dalam payload tanpa konsekuensi apa pun, ubah <ObjectEntryCount> ke nilai yang sesuai berdasarkan persyaratan Anda.

Misalnya, jika Anda merasa dapat mengizinkan hingga 10 entri objek, ubah kebijakan JSONThreatProtection sebagai berikut:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>10</ObjectEntryCount>
    <ObjectEntryNameLength>6</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Melebihi jumlah elemen array

Isi respons error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded array element count at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Contoh isi respons Error

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded array element count at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Penyebab

Error ini terjadi jika payload pesan input yang ditentukan oleh elemen <Source> berisi array JSON dengan jumlah elemen lebih dari jumlah yang ditentukan dalam elemen <ArrayElementCount> kebijakan.

Misalnya, jika elemen <ArrayElementCount> ditentukan sebagai 3, tetapi payload input memiliki array JSON dengan lebih dari 3 elemen, error ini akan ditampilkan.

Diagnosis

  1. Periksa pesan error untuk mengidentifikasi nama kebijakan dan nomor baris yang panjang array-nya terlampaui. Misalnya, dalam pesan error berikut, nama kebijakan adalah JSON-Threat-Protection-1 dan nomor baris dalam payload adalah 3:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
    
  2. Catat nilai yang ditentukan untuk elemen <ArrayElementCount> kebijakan (yang diidentifikasi pada Langkah 1).

    Dalam contoh kebijakan JSONThreatProtection berikut, <ArrayElementCount> disetel ke 3:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Periksa nomor baris spesifik (diidentifikasi pada Langkah 1) payload input dan periksa apakah array yang ditentukan memiliki jumlah yang lebih tinggi dari jumlah yang ditentukan dalam elemen <ArrayElementCount> (diidentifikasi pada Langkah 2). Jika jumlah elemen array melebihi jumlah, maka itulah penyebab error.

    Berikut adalah contoh payload input:

    {
     "name":"Ford",
     "models":[
        "Mustang",
        "Endeavour",
        "Fiesta",
        "EcoSport",
        "Focus"
     ]
    }
    

    Payload JSON yang ditunjukkan di atas memiliki 5 elemen dalam array bernama models di baris 3. Karena jumlah elemen array lebih besar dari 3 (nilai yang ditentukan untuk elemen <ArrayElementCount>), Anda mendapatkan error berikut:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count
    at line 3
    

Resolusi

Jika kebijakan JSONThreatProtection dimaksudkan untuk melindungi dari payload dengan nilai minimum jumlah array tertentu, pesan error akan muncul. Dalam hal ini, Anda tidak perlu melakukan tindakan tambahan.

Namun, jika Anda menentukan bahwa jumlah elemen yang lebih tinggi dalam array yang diizinkan, ubah <ArrayElementCount> ke nilai yang sesuai berdasarkan persyaratan Anda.

Misalnya, jika Anda merasa dapat mengizinkan hingga 5 elemen array, ubah kebijakan sebagai berikut:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>5</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>6</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Melebihi kedalaman penampung

Isi respons error

Traffic runtime menampilkan kode respons 500 yang berisi error berikut:

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded container depth at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Contoh isi respons Error

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded container depth at line 5",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Penyebab

Error ini terjadi jika payload pesan input yang ditentukan oleh elemen <Source> berisi objek JSON yang berisi elemen JSON dengan kedalaman penampung yang melebihi kedalaman penampung maksimum yang ditentukan dalam elemen <ContainerDepth> kebijakan. Kedalaman penampung adalah kedalaman bertingkat maksimum yang diizinkan untuk elemen JSON. Misalnya, array yang berisi objek yang berisi objek akan menghasilkan kedalaman containment 3.

Misalnya, jika elemen <ContainerDepth> adalah 3, tetapi payload input memiliki kedalaman penampung yang melebihi batas ini, error ini akan ditampilkan.

Diagnosis

  1. Periksa pesan error untuk mengidentifikasi nama kebijakan JSONThreatProtection dan nomor baris yang melebihi kedalaman penampung. Misalnya, dalam pesan error berikut, nama kebijakan adalah JSON-Threat-Protection-1 dan nomor baris dalam payload adalah 5.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    
  2. Catat nilai yang ditentukan untuk elemen <ContainerDepth> (yang diidentifikasi pada Langkah 1).

    Dalam contoh kebijakan JSONThreatProtection berikut, <ContainerDepth> disetel ke 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Periksa nomor baris spesifik (diidentifikasi pada Langkah 1) payload input dan periksa apakah kedalaman container dalam payload lebih tinggi dari nilai yang ditentukan dalam elemen <ContainerDepth> (diidentifikasi pada Langkah 2). Jika kedalaman penampung melebihi jumlah, berarti itulah penyebab error.

    Berikut adalah contoh payload input:

    {
     "ContainerDepth2":[ {
           "ContainerDepth4":[
              {
                 "ContainerDepth6":[
                    "1",
                    "2"
                 ]
              }
           ]
        }
     ]
    }
    

    Payload JSON yang ditunjukkan di atas memiliki kedalaman container 6 di baris 5. Karena kedalaman lebih besar dari 5, nilai yang ditentukan untuk elemen <ContainerDepth> dari kebijakan JSONThreatProtection, Anda akan mendapatkan error berikut:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    

Resolusi

Jika kebijakan JSONThreatProtection ditujukan untuk melindungi dari payload dengan kedalaman container yang melebihi nilai yang ditentukan, pesan error akan muncul. Dalam hal ini, Anda tidak perlu melakukan tindakan tambahan.

Namun, jika Anda menentukan bahwa kedalaman penampung yang lebih tinggi dapat diterima, ubah <ContainerDepth> ke nilai yang sesuai berdasarkan persyaratan Anda.

Misalnya, jika Anda merasa dapat mengizinkan kedalaman penampung hingga 10, ubah kebijakan sebagai berikut:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>10</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

Melebihi panjang nilai string

Isi respons error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded string value length at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Contoh isi respons Error

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
          Exceeded string value length at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Penyebab

Error ini terjadi jika payload pesan input yang ditentukan oleh elemen <Source> berisi elemen JSON yang memiliki nilai dengan lebih banyak karakter daripada yang diizinkan oleh elemen <StringValueLength>.

Misalnya, jika elemen <StringValueLength> disetel ke 50 dalam kebijakan, tetapi payload input memiliki satu atau beberapa elemen yang nilainya berisi lebih dari 50 karakter, error ini akan ditampilkan.

Diagnosis

  1. Periksa pesan error untuk mengidentifikasi nama kebijakan dan nomor baris yang melebihi panjang string. Pada contoh berikut, nama kebijakan adalah baris JSON-Threat-Protection-1 and dalam payload 3.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
    
  2. Catat nilai yang ditentukan untuk elemen <StringValueLength> di (yang diidentifikasi pada Langkah 1).

    Dalam contoh kebijakan JSONThreatProtection berikut, <StringValueLength> disetel ke 50:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Periksa nomor baris spesifik (diidentifikasi pada Langkah 1) payload input dan periksa apakah panjang nilai lebih besar dari jumlah karakter yang ditentukan untuk elemen <StringValueLength> (yang diidentifikasi pada Langkah 2). Jika panjang nilai melebihi batas, berarti itulah yang menyebabkan error.

    Berikut adalah contoh payload input:

    {
      "Country": "New Zealand",
      "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu"
    }
    

    Payload JSON yang ditunjukkan di atas memiliki objek bernama Place Name yang nilainya Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu memiliki 85 karakter di baris 3. Karena panjang nilai lebih besar dari 50, nilai yang ditentukan dalam elemen <StringValueLength>, Anda akan mendapatkan error berikut:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length
    at line 3
    

Resolusi

Jika kebijakan JSONThreatProtection ditujukan untuk melindungi dari payload dengan nilai yang melebihi panjang string tertentu, pesan error akan muncul. Dalam hal ini, Anda tidak perlu melakukan tindakan tambahan.

Namun, jika Anda menentukan bahwa nilai yang lebih panjang dapat ditentukan dalam payload, ubah <StringValueLength> ke nilai yang sesuai berdasarkan persyaratan Anda.

Misalnya, jika Anda merasa dapat mengizinkan nilai dengan panjang hingga 90, maka ubah kebijakan sebagai berikut:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>90</StringValueLength>
</JSONThreatProtection>

Bukan objek JSON yang valid

Isi respons error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: string: at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Contoh isi respons Error

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: Expecting : at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

Penyebab

Error ini terjadi jika payload pesan input yang ditentukan oleh elemen <Source> dalam kebijakan JSONThreatProtection bukan objek JSON yang valid.

Diagnosis

  1. Periksa pesan error untuk mengidentifikasi nama kebijakan dan nomor baris tempat error terjadi. Pada contoh berikut, nama kebijakan adalah baris JSON-Threat-Protection-1 and dalam payload 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. Periksa nomor baris spesifik (diidentifikasi pada Langkah 1) payload input dan periksa apakah objek JSON yang diteruskan dalam payload memang objek JSON yang valid.

    Berikut adalah contoh payload input:

    {
      "Longitude": 6.11499,
      "Latitude"  50.76891
    }
    

    Dalam payload JSON yang ditunjukkan di atas, baris 3 tidak memiliki ":" (titik dua). Karena ini bukan objek JSON yang valid, Anda mendapatkan error:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    Expecting : at line 3
    

Resolusi

Pastikan payload JSON input yang valid diteruskan ke semua Proxy API yang menyertakan kebijakan JSONThreatProtection.

Untuk contoh yang dijelaskan di atas, ubah payload JSON sebagai berikut:

{
    "Longitude": 6.11499,
  "Latitude" : 50.76891
}

SourceUnavailable

Kode Error

steps.jsonthreatprotection.SourceUnavailable

Isi respons error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]::
          Source[var_name] is not available"
        "detail": {
            "errorcode": "steps.jsonthreatprotection.SourceUnavailable"
        }
    }
}

Contoh isi respons Error

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
          Source requests is not available",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.SourceUnavailable"
        }
    }
}

Penyebab

Error ini terjadi jika variabel message yang ditentukan dalam elemen <Source> pada kebijakan JSONThreatProtection adalah:

  • Di luar cakupan (tidak tersedia di alur spesifik tempat kebijakan sedang dijalankan)
  • Bukan salah satu dari nilai request, response, atau message yang valid

Misalnya, error ini terjadi jika elemen <Source> dalam kebijakan disetel ke variabel yang tidak ada dalam alur tempat kebijakan dijalankan.

Diagnosis

  1. Identifikasi nama kebijakan dan nama variabel Sumber dari pesan error. Misalnya, dalam pesan error berikut, nama kebijakan adalah JSON-Threat-Protection-1 dan variabel Sumber adalah requests:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    
  2. Periksa nilai yang ditentukan untuk elemen <Source> yang diidentifikasi di Langkah 1.

    Pada contoh kebijakan JSONThreatProtection berikut, elemen <Source> disetel ke requests.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>requests</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    

    Nilai yang valid untuk elemen <Source> adalah request, response, atau message. Karena permintaan bukan nilai yang valid dan tidak ada dalam alur tempat kebijakan dieksekusi, Anda akan mendapatkan error:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    

Resolusi

Pastikan variabel yang ditetapkan di elemen <Source> pada kebijakan JSONThreatProtection yang gagal disetel ke request, response, atau message dan ada di alur tempat kebijakan dijalankan.

Untuk memperbaiki contoh kebijakan JSONThreatProtection yang ditampilkan di atas, Anda dapat mengubah elemen <Source> untuk menggunakan variabel request, karena variabel tersebut ada dalam alur permintaan:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

NonMessageVariable

Kode Error

steps.jsonthreatprotection.NonMessageVariable

Isi respons error

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Variable var_name does not resolve to a Message"
        "detail": {
            "errorcode": "steps.jsonthreatprotection.NonMessageVariable"
        }
    }
}

Contoh isi respons Error

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Variable message.content does not resolve to a Message",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.NonMessageVariable"
        }
    }
}

Penyebab

Error ini terjadi jika elemen <Source> dalam kebijakan JSONThreatProtection ditetapkan ke variabel yang bukan jenis pesan.

Variabel jenis pesan mewakili keseluruhan permintaan dan respons HTTP. Permintaan, respons, dan pesan variabel alur Apigee Edge bawaan merupakan pesan jenis. Untuk mempelajari variabel pesan lebih lanjut, baca Referensi variabel.

Diagnosis

  1. Identifikasi nama kebijakan JSONThreatProtection dan nama variabel Sumber dari pesan error. Misalnya, dalam pesan error berikut, nama kebijakan adalah JSON-Threat-Protection-1 dan variabel Sumber adalah message.content:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
    
  2. Periksa elemen <Source> kebijakan JSONThreatProtection (yang diidentifikasi di Langkah 1).

    Dalam contoh kebijakan JSONThreatProtection berikut, <Source> disetel ke message.content, bukan message:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>message.content</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    

    Karena message.content bukan jenis pesan, Anda mendapatkan error:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does
    not resolve to a Message
    

Resolusi

Pastikan elemen <Source> di kebijakan JSONThreatProtection yang gagal disetel ke variabel alur jenis pesan yang ada di alur tempat kebijakan dijalankan.

Untuk memperbaiki kebijakan, Anda dapat mengubah elemen <Source> untuk menentukan variabel dari jenis pesan. Misalnya, pada JSONThreatProtection yang gagal, Anda dapat menentukan elemen <Source> sebagai message:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
    <DisplayName>JSON Threat Protection-1</DisplayName>
    <Properties/>
    <ArrayElementCount>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>message</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>