Estás viendo la documentación de Apigee Edge.
Ve a la
documentación de Apigee X. info
ExecutionFailed
Código de error
steps.jsonthreatprotection.ExecutionFailed
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Tipos de errores y posibles causas
La política JSONThreatProtection puede arrojar varios tipos de errores ExecutionFailed. En la siguiente tabla, se enumeran los diferentes tipos de errores y las posibles causas:
Tipo de error | Causa |
Se excedió la longitud del nombre de entrada del objeto | Se excede la longitud máxima de string permitida en el nombre de entrada de un objeto. |
Se superó el recuento de entradas de objetos | Se excede la cantidad máxima de entradas permitidas en un objeto. |
Se excedió el recuento de elementos del arreglo | Se superó la cantidad máxima de elementos permitidos en un arreglo. |
Profundidad excedida del contenedor | Se supera la profundidad máxima anidada permitida. |
Se excedió la longitud del valor de string | Se superó la longitud máxima permitida para un valor de string. |
Objeto JSON no válido | La carga útil JSON de entrada no es válida. |
Se superó la longitud del nombre de entrada del objeto.
Cuerpo de la respuesta de 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" } } }
Cuerpo de la respuesta de error de ejemplo
{
"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"
}
}
}
Causa
Este error se genera si la carga útil del mensaje de entrada que especifica el elemento <Source>
contiene un objeto JSON con un nombre de propiedad que excede la longitud máxima que se especifica en el elemento <ObjectEntryNameLength>
.
Por ejemplo, si el elemento <ObjectEntryNameLength>
se especifica como 5 en la política, pero la carga útil del mensaje de entrada tiene una propiedad JSON cuyo nombre supera los 5 caracteres, se genera este error.
Diagnóstico
Examina el mensaje de error para identificar el nombre de la política JSONThreatProtection y el número de línea donde se encuentra el nombre de entrada largo. Por ejemplo, en el siguiente mensaje de error, el nombre de la política JSONThreatProtection es
JSON-Threat-Protection-1
y el número de línea en la carga útil es 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Examina la política que identificaste en el paso 1 y toma nota del valor especificado en el elemento
<ObjectEntryNameLength>
.Por ejemplo, en la siguiente política JSONThreatProtection,
<ObjectEntryNameLength>
se establece en5
:<?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>
Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y verifica si la longitud del nombre del objeto es mayor que el valor especificado en el elemento
<ObjectEntryNameLength>
(identificado en el paso 2). Si la longitud del nombre del objeto supera ese número, esa es la causa del error.A continuación, te mostramos un ejemplo de carga útil de entrada:
{ "number" : 500, "string" : "text" }
La carga útil JSON que se muestra antes tiene una propiedad llamada
number
en la línea 2 que tiene 6 caracteres (la longitud del nombre es 6). Dado que la longitud del nombre del objeto es mayor que 5 (el valor especificado para el elemento<ObjectEntryNameLength>
), verás el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Solución
Si la política JSONThreatProtection se diseñó para brindar protección contra las cargas útiles con nombres de entrada de objetos que superan el valor definido, se espera que haya un mensaje de error. En este caso, no es necesario que realices ninguna otra acción.
Sin embargo, si determinas que se pueden especificar nombres de entrada de objetos más largos en la carga útil sin ninguna consecuencia, establece el valor de <ObjectEntryNameLength>
en un valor adecuado según tus requisitos.
Por ejemplo, si consideras que puedes permitir nombres de objetos de hasta 10 caracteres, modifica la política JSONThreatProtection de la siguiente manera:
<?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>
Se superó el recuento de entradas de objetos
Cuerpo de la respuesta de 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" } } }
Cuerpo de la respuesta de error de ejemplo
{
"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"
}
}
}
Causa
Este error ocurre si la carga útil del mensaje de entrada que especifica el elemento <Source>
contiene un objeto JSON con más entradas (propiedades) que el valor especificado en el elemento <ObjectEntryCount>
de la política.
Por ejemplo, si el elemento <ObjectEntryCount>
es 5, pero la carga útil JSON de entrada tiene más de 5 entradas, se genera este error.
Diagnóstico
Examina el mensaje de error para identificar el nombre de la política JSONThreatProtection y el número de línea en el que se excede la cantidad de entradas. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es
JSON-Threat-Protection-1
, y el número de línea en la carga útil es7
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Toma nota del valor especificado en el elemento
<ObjectEntryCount>
de la política (identificado en el paso 1).En el siguiente ejemplo de política,
<ObjectEntryCount>
se configura como5
:<?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>
Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y verifica si la cantidad de entidades en la carga útil es mayor que el valor especificado para el elemento
<ObjectEntryCount>
(identificado en el paso 2). Si el número de objetos excede la cantidad de entradas de objetos, esa es la causa del error.A continuación, te mostramos un ejemplo de carga útil de entrada:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }
En la carga útil JSON que se mostró antes, la entrada 6 se produce en la línea 7 (empresa). Dado que el recuento de las entradas de objetos en la carga útil JSON de entrada es mayor que 5 (el valor especificado para el elemento
<ObjectEntryCount>
), obtienes el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Solución
Si la política JSONThreatProtection se diseñó para brindar protección contra las cargas útiles con una cantidad de entradas de objetos que exceden un umbral específico, se espera que reciba el mensaje de error. En este caso, no es necesario que realices ninguna acción adicional.
Sin embargo, si determinas que se pueden incluir más entradas de objetos en la carga útil sin ninguna consecuencia, establece el valor de <ObjectEntryCount>
en un valor adecuado según tus requisitos.
Por ejemplo, si crees que puedes permitir hasta 10 entradas de objeto, modifica la política JSONThreatProtection de la siguiente manera:
<?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>
Se excedió el recuento de elementos del arreglo
Cuerpo de la respuesta de 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" } } }
Cuerpo de la respuesta de error de ejemplo
{
"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"
}
}
}
Causa
Este error se genera si la carga útil del mensaje de entrada especificada por el elemento <Source>
contiene un arreglo JSON con una cantidad de elementos mayor que el número especificado en el elemento <ArrayElementCount>
de la política.
Por ejemplo, si el elemento <ArrayElementCount>
se especifica como 3
, pero la carga útil de entrada tiene un arreglo JSON con más de 3 elementos, se genera este error.
Diagnóstico
Examina el mensaje de error para identificar el nombre de la política y el número de línea donde se excede la longitud del arreglo. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es
JSON-Threat-Protection-1
, y el número de línea en la carga útil es3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Toma nota del valor especificado en el elemento
<ArrayElementCount>
de la política (identificado en el paso 1).En el siguiente ejemplo de la política JSONThreatProtection,
<ArrayElementCount>
se configura como3
:<?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>
Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y verifica si el arreglo especificado tiene un recuento mayor que el número especificado en el elemento
<ArrayElementCount>
(identificado en el paso 2). Si el número de elementos del arreglo supera el recuento, esa es la causa del error.A continuación, te mostramos un ejemplo de carga útil de entrada:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
La carga útil JSON que se muestra antes tiene 5 elementos en el arreglo llamado
models
en la línea 3. Debido a que la cantidad de elementos del arreglo es mayor que 3 (el valor especificado para el elemento<ArrayElementCount>
), verás el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Solución
Si la política JSONThreatProtection se diseñó para brindar protección contra las cargas útiles con un límite de cantidad de arreglos específico, se espera el mensaje de error. En este caso, no es necesario que realices ninguna acción adicional.
Sin embargo, si determinas que puedes permitir una mayor cantidad de elementos en un arreglo, modifica <ArrayElementCount>
y establece un valor adecuado según tus requisitos.
Por ejemplo, si crees que puedes permitir hasta 5 elementos de arreglo, modifica la política de la siguiente manera:
<?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>
Profundidad excedida del contenedor
Cuerpo de la respuesta de error
El tráfico de entorno de ejecución muestra un código de respuesta 500 con el siguiente error:
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Cuerpo de la respuesta de error de ejemplo
{
"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"
}
}
}
Causa
Este error ocurre si la carga útil del mensaje de entrada especificada por el elemento <Source>
contiene un objeto JSON que contiene elementos JSON con una profundidad de contenedor que supera la profundidad máxima del contenedor especificada en el elemento <ContainerDepth>
de la política. La profundidad del contenedor es la profundidad máxima anidada permitida para los elementos JSON. Por ejemplo, un arreglo que contiene un objeto que tiene un objeto daría como resultado una profundidad de contención de 3.
Por ejemplo, si el elemento <ContainerDepth>
es 3
, pero la carga útil de entrada tiene una profundidad del contenedor que excede este límite, se genera este error.
Diagnóstico
Examina el mensaje de error para identificar el nombre de la política JSONThreatProtection y el número de línea en el que se excede la profundidad del contenedor. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es
JSON-Threat-Protection-1
, y el número de línea en la carga útil es5
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Toma nota del valor especificado para el elemento
<ContainerDepth>
(identificado en el paso 1).En el siguiente ejemplo de la política JSONThreatProtection,
<ContainerDepth>
se configura como5
:<?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>
Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y comprueba si la profundidad del contenedor en la carga útil es mayor que el valor especificado en el elemento
<ContainerDepth>
(identificado en el paso 2). Si la profundidad del contenedor supera el recuento, esa es la causa del error.A continuación, te mostramos un ejemplo de carga útil de entrada:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
La carga útil JSON que se muestra antes tiene una profundidad de contenedor de 6 en la línea 5. Dado que la profundidad es mayor que 5, el valor especificado para el elemento
<ContainerDepth>
de la política JSONThreatProtection aparece el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Solución
Se espera el mensaje de error si la política JSONThreatProtection se diseñó para brindar protección contra las cargas útiles con profundidades de contenedor que superen el valor especificado. En este caso, no es necesario que realices ninguna acción adicional.
Sin embargo, si determinas que se pueden aceptar valores más elevados profundidades de contenedor, establece <ContainerDepth>
en un valor adecuado según tus requisitos.
Por ejemplo, si crees que puedes permitir una profundidad de contenedores de hasta 10, modifica la política de la siguiente manera:
<?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>
Se excedió la longitud del valor de string
Cuerpo de la respuesta de 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" } } }
Cuerpo de la respuesta de error de ejemplo
{
"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"
}
}
}
Causa
Este error ocurre si la carga útil del mensaje de entrada que especifica el elemento <Source>
contiene elementos JSON que tienen valores con más caracteres que los permitidos por el elemento <StringValueLength>
.
Por ejemplo, si el elemento <StringValueLength>
se configuró como 50
en la política, pero la carga útil de entrada tiene uno o más elementos cuyos valores contienen más de 50 caracteres, se producirá este error.
Diagnóstico
Examina el mensaje de error para identificar el nombre de la política y el número de línea donde se excede la longitud de string. En el siguiente ejemplo, el nombre de la política es
JSON-Threat-Protection-1 and
línea en la carga útil3
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Toma nota del valor especificado para el elemento
<StringValueLength>
(identificado en el paso 1).En el siguiente ejemplo de la política JSONThreatProtection,
<StringValueLength>
se establece en50
.<?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>
Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y verifica si la longitud del valor es mayor que la cantidad de caracteres especificada para el elemento
<StringValueLength>
(identificado en el paso 2). Si la longitud del valor excede el límite, esa es la causa del error.A continuación, te mostramos un ejemplo de carga útil de entrada:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
La carga útil JSON que se muestra arriba tiene un objeto llamado
Place Name
cuyo valorTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
tiene 85 caracteres en la línea 3. Dado que la longitud del valor es mayor que 50, el valor especificado en el elemento<StringValueLength>
, se mostrará el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Solución
Si la política JSONThreatProtection está diseñada para brindar protección contra cargas útiles con valores que exceden una longitud de string específica, se espera el mensaje de error. En este caso, no es necesario que realices ninguna acción adicional.
Sin embargo, si determinas que se puede especificar una longitud de valor más larga en la carga útil, modifica <StringValueLength>
a un valor adecuado según tus requisitos.
Por ejemplo, si crees que puedes permitir un valor de longitud de hasta 90, modifica la política de la siguiente manera:
<?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>
Objeto JSON no válido
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Cuerpo de la respuesta de error de ejemplo
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Causa
Este error se genera si la carga útil del mensaje de entrada que especifica el elemento <Source>
en la política JSONThreatProtection no es un objeto JSON válido.
Diagnóstico
Examina el mensaje de error para identificar el nombre de la política y el número de línea donde ocurrió el error. En el siguiente ejemplo, el nombre de la política es
JSON-Threat-Protection-1 and
línea en la carga útil2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y verifica si el objeto JSON que se pasó a la carga útil es en realidad un objeto JSON válido.
A continuación, te mostramos un ejemplo de carga útil de entrada:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
En la carga útil JSON que se muestra arriba, la línea 3 no tiene
":"
(dos puntos). Debido a que no es un objeto JSON válido, verás el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Solución
Asegúrate de que se envíe una carga útil JSON válida a cualquier proxy de API que incluya la política JSONThreatProtection.
Para el ejemplo descrito anteriormente, modifica la carga útil JSON de la siguiente manera:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Código de error
steps.jsonthreatprotection.SourceUnavailable
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Cuerpo de la respuesta de error de ejemplo
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
Causa
Este error se produce si la variable mensaje especificada en el elemento <Source>
de la política JSONThreatProtection es una de las siguientes opciones:
- Está fuera del alcance (no está disponible en el flujo específico en el que se ejecuta la política) o
- No es uno de los valores válidos
request
,response
omessage
.
Por ejemplo, este error ocurre si el elemento <Source>
de la política se configura como una variable que no existe en el flujo en el que se ejecuta la política.
Diagnóstico
Identifica el nombre de la política y el nombre de la variable de origen del mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es
JSON-Threat-Protection-1
, y la variable de origen esrequests
:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Examina el valor especificado para el elemento
<Source>
identificado en el paso 1.En el siguiente ejemplo de política JSONThreatProtection, el elemento
<Source>
se configura comorequests
.<?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>
Los valores válidos para el elemento
<Source>
sonrequest
,response
omessage
. Debido a que las solicitudes no son un valor válido y no existen en el flujo en el que se ejecuta la política, obtienes el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Solución
Asegúrate de que la variable establecida en el elemento <Source>
de la política con errores JSONThreatProtection esté establecida en request
, response
o message
, y que exista en el flujo en el que se ejecuta la política.
Si quieres corregir la política JSONThreatProtection de ejemplo que se muestra arriba, puedes modificar el elemento <Source>
a fin de usar la variable request
, ya que existe en el flujo de solicitudes:
<?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
Código de error
steps.jsonthreatprotection.NonMessageVariable
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Cuerpo de la respuesta de error de ejemplo
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
Causa
Este error ocurre si el elemento <Source>
en la política JSONThreatProtection está configurado en una variable que no es del tipo mensaje.
Las variables del tipo de mensaje representan respuestas y solicitudes HTTP completas. La solicitud, la respuesta y el mensaje de las variables de flujo integradas de Apigee Edge son del tipo mensaje. Para obtener más información acerca de las variables de mensaje, consulta la Referencia de variables.
Diagnóstico
Identifica el nombre de la política JSONThreatProtection y el nombre de la variable de origen en el mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es
JSON-Threat-Protection-1
, y la variable de origen esmessage.content
:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Examina el elemento
<Source>
de la política JSONThreatProtection (identificada en el paso 1).En el siguiente ejemplo de la política JSONThreatProtection,
<Source>
se configura comomessage.content
, en lugar demessage
:<?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>
Dado que
message.content
no es un tipo de mensaje, verás el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Solución
Asegúrate de que el elemento <Source>
de la política con errores JSONThreatProtection esté establecido en una variable de flujo de tipo mensaje que exista en el flujo en el que se ejecuta la política.
A fin de corregir la política, puedes modificar el elemento <Source>
para especificar una variable que sea de tipo de mensaje. Por ejemplo, en el JSON con error JSONThreatProtection, podrías especificar el elemento <Source>
como 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>