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 |
Melebihi panjang nama entri objek | Panjang string maksimum yang diizinkan dalam nama entri objek terlampaui. |
Melebihi jumlah entri objek | Jumlah entri maksimum yang diizinkan dalam sebuah objek terlampaui. |
Melebihi jumlah elemen array | Jumlah elemen maksimum yang diizinkan dalam array terlampaui. |
Melebihi kedalaman penampung | Kedalaman bertingkat maksimum yang diizinkan terlampaui. |
Melebihi panjang nilai string | 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>
ditentukan sebagai 5 dalam kebijakan, tetapi payload pesan input memiliki properti JSON yang namanya melebihi 5 karakter, error ini akan ditampilkan.
Diagnosis
Periksa pesan error untuk mengidentifikasi nama kebijakan JSONThreatProtection dan nomor baris tempat munculnya nama entri yang panjang. Misalnya, dalam pesan error berikut, nama kebijakan JSONThreatProtection adalah
JSON-Threat-Protection-1
dan nomor baris di payload adalah 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Periksa kebijakan yang Anda identifikasi pada Langkah 1, dan catat nilai yang ditentukan dalam elemen
<ObjectEntryNameLength>
.Misalnya, dalam kebijakan JSONThreatProtection berikut,
<ObjectEntryNameLength>
ditetapkan ke5
:<?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>
Periksa nomor baris spesifik (yang diidentifikasi pada Langkah 1) dari 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 yang ditentukan, maka itulah penyebab error.Berikut adalah contoh payload input:
{ "number" : 500, "string" : "text" }
Payload JSON yang ditampilkan di atas memiliki properti bernama
number
di baris 2 yang memiliki 6 karakter (panjang nama 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 dimaksudkan untuk melindungi dari payload yang berisi nama entri objek yang melebihi nilai yang ditentukan, maka pesan error akan muncul. Dalam kasus ini, Anda tidak perlu melakukan tindakan tambahan apa pun.
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 kebutuhan Anda.
Misalnya, jika Anda merasa dapat mengizinkan nama objek hingga panjang 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
Periksa pesan error untuk mengidentifikasi nama kebijakan JSONThreatProtection dan nomor baris tempat jumlah entri terlampaui. Misalnya, dalam pesan error berikut, nama kebijakannya adalah
JSON-Threat-Protection-1
dan nomor baris dalam payload adalah7
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Catat nilai yang ditentukan dalam elemen
<ObjectEntryCount>
kebijakan (yang diidentifikasi pada Langkah 1).Pada contoh kebijakan berikut,
<ObjectEntryCount>
ditetapkan ke5
:<?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>
Periksa nomor baris spesifik (yang diidentifikasi pada Langkah 1) dari payload input dan periksa apakah jumlah entity dalam payload lebih besar dari nilai yang ditentukan untuk elemen
<ObjectEntryCount>
(yang diidentifikasi pada 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 muncul di baris #7 (company). Karena jumlah entri objek dalam payload JSON input lebih besar dari 5 (nilai yang ditentukan untuk elemen
<ObjectEntryCount>
), Anda akan 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 dimaksudkan untuk melindungi dari payload dengan sejumlah entri objek yang melebihi nilai minimum tertentu, pesan error akan muncul. Dalam hal ini, Anda tidak perlu melakukan tindakan tambahan.
Namun, jika Anda menentukan bahwa lebih banyak entri objek dapat disertakan dalam payload tanpa konsekuensi apa pun, maka ubah <ObjectEntryCount>
ke nilai yang sesuai berdasarkan kebutuhan 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 yang lebih banyak 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
Periksa pesan error untuk mengidentifikasi nama kebijakan dan nomor baris yang melebihi panjang array. Misalnya, dalam pesan error berikut, nama kebijakannya adalah
JSON-Threat-Protection-1
dan nomor baris dalam payload adalah3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Catat nilai yang ditentukan untuk elemen
<ArrayElementCount>
kebijakan (yang diidentifikasi pada Langkah 1).Pada contoh kebijakan JSONThreatProtection berikut,
<ArrayElementCount>
ditetapkan ke3
:<?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>
Periksa nomor baris spesifik (yang diidentifikasi pada Langkah 1) dari payload input dan periksa apakah array yang ditentukan di sana memiliki hitungan yang lebih tinggi dari angka yang ditentukan dalam elemen
<ArrayElementCount>
(yang diidentifikasi pada Langkah 2). Jika jumlah elemen array melebihi jumlahnya, 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 (nilainya ditentukan untuk elemen<ArrayElementCount>
), Anda akan 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, maka pesan error akan muncul. Dalam hal ini, tidak ada tindakan tambahan yang diperlukan.
Namun, jika Anda menentukan bahwa jumlah elemen yang lebih tinggi dalam array dapat diizinkan, ubah <ArrayElementCount>
ke nilai yang sesuai berdasarkan kebutuhan 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 dengan 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 container yang melebihi kedalaman container 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 sebuah objek akan menghasilkan kedalaman containment 3.
Misalnya, jika elemen <ContainerDepth>
adalah 3
, tetapi payload input memiliki kedalaman container yang melebihi batas ini, error ini akan ditampilkan.
Diagnosis
Periksa pesan error untuk mengidentifikasi nama kebijakan JSONThreatProtection dan nomor baris tempat kedalaman penampung terlampaui. Misalnya, dalam pesan error berikut, nama kebijakannya adalah
JSON-Threat-Protection-1
dan nomor baris dalam payload adalah5
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Catat nilai yang ditentukan untuk elemen
<ContainerDepth>
(yang diidentifikasi pada Langkah 1).Pada contoh kebijakan JSONThreatProtection berikut,
<ContainerDepth>
ditetapkan ke5
:<?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>
Periksa nomor baris spesifik (yang diidentifikasi pada Langkah 1) dari payload input dan periksa apakah kedalaman penampung di payload lebih tinggi dari nilai yang ditentukan dalam elemen
<ContainerDepth>
(yang diidentifikasi pada Langkah 2). Jika kedalaman penampung melebihi jumlahnya, maka itulah penyebab error.Berikut adalah contoh payload input:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
Payload JSON yang ditampilkan di atas memiliki kedalaman penampung 6 di baris 5. Sejak kedalaman lebih dari 5, nilai yang ditentukan untuk elemen
<ContainerDepth>
dari Kebijakan JSONThreatProtection Anda 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 dimaksudkan untuk memberikan perlindungan terhadap payload dengan kedalaman container yang melebihi nilai yang ditentukan, maka pesan error akan muncul. Dalam hal ini, tidak ada tindakan tambahan yang diperlukan.
Namun, jika Anda memutuskan 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 karakter lebih banyak dari 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
Periksa pesan error untuk mengidentifikasi nama kebijakan dan nomor baris yang panjang stringnya terlampaui. Pada contoh berikut, nama kebijakan adalah baris
JSON-Threat-Protection-1 and
dalam3
payload.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Catat nilai yang ditentukan untuk elemen
<StringValueLength>
di (yang diidentifikasi pada Langkah 1).Pada contoh kebijakan JSONThreatProtection berikut,
<StringValueLength>
ditetapkan ke50
:<?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>
Periksa nomor baris tertentu (diidentifikasi pada Langkah 1) dari payload input dan periksa apakah panjang nilai lebih besar dari jumlah karakter yang ditentukan untuk elemen
<StringValueLength>
(diidentifikasi pada Langkah 2). Jika panjang nilai melebihi batas, maka itulah penyebab error.Berikut adalah contoh payload input:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
Payload JSON yang ditampilkan di atas memiliki objek bernama
Place Name
yang nilainyaTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
memiliki 85 karakter pada 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 dimaksudkan 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 panjang nilai yang lebih panjang dapat ditentukan dalam payload, ubah <StringValueLength>
ke nilai yang sesuai berdasarkan kebutuhan Anda.
Misalnya, jika Anda merasa dapat mengizinkan nilai hingga 90, 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
Periksa pesan error untuk mengidentifikasi nama kebijakan dan nomor baris tempat error terjadi. Dalam contoh berikut, nama kebijakan adalah baris
JSON-Threat-Protection-1 and
dalam payload2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Periksa nomor baris spesifik (yang diidentifikasi pada Langkah 1) dari payload input dan periksa apakah objek JSON yang diteruskan dalam payload memang merupakan objek JSON yang valid.
Berikut adalah contoh payload input:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
Dalam payload JSON yang ditampilkan di atas, baris 3 tidak memiliki
":"
(titik dua). Karena 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 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 pesan yang ditentukan dalam elemen <Source>
kebijakan JSONThreatProtection adalah:
- Di luar cakupan (tidak tersedia di alur tertentu tempat kebijakan dijalankan)
- Bukan salah satu nilai yang valid
request
,response
, ataumessage
Misalnya, error ini terjadi jika elemen <Source>
dalam kebijakan disetel ke
variabel yang tidak ada dalam alur tempat kebijakan dijalankan.
Diagnosis
Identifikasi nama kebijakan, dan nama variabel Sumber dari pesan error. Misalnya, dalam pesan error berikut, nama kebijakannya adalah
JSON-Threat-Protection-1
dan variabel Sumbernya adalahrequests
:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Periksa nilai yang ditentukan untuk elemen
<Source>
yang diidentifikasi di Langkah 1.Dalam contoh kebijakan JSONThreatProtection berikut, elemen
<Source>
disetel kerequests
.<?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>
adalahrequest
,response
, ataumessage
. Karena permintaan bukan nilai yang valid dan tidak ada dalam alur tempat kebijakan dijalankan, Anda akan mendapatkan error:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Resolusi
Pastikan variabel yang ditetapkan di elemen <Source>
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 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>
di kebijakan JSONThreatProtection dalam
ditetapkan ke variabel yang bukan berjenis pesan.
Variabel jenis pesan mewakili seluruh permintaan dan respons HTTP. Fitur bawaan Permintaan, respons, dan pesan variabel alur Edge Apigee merupakan jenis pesan. Kepada mempelajari variabel pesan lebih lanjut, lihat Referensi variabel.
Diagnosis
Mengidentifikasi nama kebijakan JSONThreatProtection dan nama variabel Sumber dari pesan {i>error<i}. Misalnya, dalam pesan error berikut, nama kebijakan adalah
JSON-Threat-Protection-1
dan variabel Sumber adalahmessage.content
:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Periksa elemen
<Source>
kebijakan JSONThreatProtection (yang diidentifikasi pada Langkah 1).Dalam contoh kebijakan JSONThreatProtection berikut,
<Source>
disetel kemessage.content
, bukanmessage
:<?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 dari jenis pesan, Anda akan 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 ditetapkan
ditetapkan ke variabel alur jenis pesan yang ada dalam alur tempat kebijakan dijalankan.
Untuk memperbaiki kebijakan, Anda dapat mengubah elemen <Source>
untuk menentukan variabel
yang merupakan jenis pesan. Misalnya, di JSONThreatProtection yang gagal, Anda dapat
tentukan 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>