Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X. info
ExecutionFailed
Code d'erreur
steps.jsonthreatprotection.ExecutionFailed
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Types d'erreurs et causes possibles
La règle JSONThreatProtection peut générer de nombreux types d'erreurs ExecutionFailed. Le tableau ci-dessous répertorie les différents types d'erreurs et leurs causes possibles :
Type d'erreur | Cause |
Longueur de noms d'entrée d'objet dépassée | La longueur maximale de chaîne autorisée dans le nom d'entrée d'un objet est dépassée. |
Nombre d'entrées d'objet dépassé | Le nombre maximal d'entrées autorisées dans un objet est dépassé. |
Nombre d'éléments de tableau dépassé | Le nombre maximal d'éléments autorisés dans un tableau est dépassé. |
Profondeur de conteneur dépassée | La profondeur des données imbriquées maximale autorisée est dépassée. |
Longueur de valeur de chaîne dépassée | La longueur maximale autorisée pour une valeur de chaîne est dépassée. |
Objet JSON non valide | La charge utile JSON d'entrée n'est pas valide. |
Longueur de nom d'entrée d'objet dépassée
Corps de la réponse d'erreur
{ "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" } } }
Exemple de corps de réponse d'erreur
{
"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"
}
}
}
Cause
Cette erreur se produit si la charge utile du message d'entrée spécifiée par l'élément <Source>
contient un objet JSON dont le nom de propriété dépasse la longueur maximale spécifiée dans l'élément <ObjectEntryNameLength>
.
Par exemple, si l'élément <ObjectEntryNameLength>
est spécifié comme étant dans la stratégie 5, mais que la charge utile du message d'entrée possède une propriété JSON dont le nom dépasse 5 caractères, cette erreur est renvoyée.
Diagnostic
Examinez le message d'erreur pour identifier le nom de la règle JSONThreatProtection et le numéro de ligne où le nom d'entrée long réside. Par exemple, dans le message d'erreur suivant, le nom de la règle JSONThreatProtection est
JSON-Threat-Protection-1
et le numéro de ligne de la charge utile est 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Examinez la stratégie que vous avez identifiée à l'étape 1 et notez la valeur spécifiée dans l'élément
<ObjectEntryNameLength>
.Par exemple, dans la règle JSONThreatProtection suivante,
<ObjectEntryNameLength>
est défini sur5
:<?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>
Examinez le numéro de ligne spécifique (identifié à l'étape 1) de la charge utile d'entrée et vérifiez si la longueur du nom d'objet est supérieure à la valeur spécifiée dans l'élément
<ObjectEntryNameLength>
(identifié à l'étape 2). Si la longueur du nom de l'objet dépasse ce nombre, alors c'est la cause de l'erreur qui s'est produite.Voici un exemple de charge utile d'entrée :
{ "number" : 500, "string" : "text" }
La charge utile JSON indiquée ci-dessus possède une propriété nommée
number
à la ligne 2 qui comporte 6 caractères (la longueur du nom est 6). Comme la longueur du nom de l'objet est supérieure à 5 (la valeur spécifiée pour l'élément<ObjectEntryNameLength>
), l'erreur suivante s'affiche :JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Solution
Si la règle JSONThreatProtection a été conçue pour protéger contre les charges utiles avec des noms d'entrée d'objet dépassant la valeur définie, le message d'erreur est alors attendu. Dans ce cas, aucune autre action n'est requise.
Toutefois, si vous décidez que les noms d'entrée d'objet plus longs peuvent être spécifiés dans les charges utiles sans conséquences, définissez <ObjectEntryNameLength>
sur une valeur appropriée en fonction de vos besoins.
Par exemple, si vous pensez que vous pouvez autoriser des noms d'objets d'une longueur maximale de 10 caractères, modifiez la stratégie JSONThreatProtection comme suit :
<?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>
Nombre d'entrées d'objet dépassé
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Exemple de corps de réponse d'erreur
{
"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"
}
}
}
Cause
Cette erreur se produit si la charge utile du message d'entrée spécifiée par l'élément <Source>
contient un objet JSON contenant avec plus d'entrées (propriétés) que la valeur spécifiée dans l'élément <ObjectEntryCount>
de la stratégie.
Par exemple, cette erreur est générée si l'élément <ObjectEntryCount>
comporte la valeur 5 alors que la charge utile JSON d'entrée comporte plus de 5 entrées.
Diagnostic
Examinez le message d'erreur pour identifier le nom de la règle JSONThreatProtection et le numéro de ligne dans lequel le nombre d'entrées est dépassé. Par exemple, dans le message d'erreur suivant, le nom de la règle est
JSON-Threat-Protection-1
et le numéro de ligne de la charge utile est7
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Notez la valeur spécifiée dans l'élément
<ObjectEntryCount>
de la règle (identifié à l'étape 1).Dans l'exemple de stratégie suivant,
<ObjectEntryCount>
est défini sur5
:<?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>
Examinez le numéro de ligne spécifique (identifié à l'étape 1) de la charge utile d'entrée et vérifiez si le nombre d'entités de la charge utile est supérieur à la valeur spécifiée pour l'élément
<ObjectEntryCount>
(identifié à l'étape 2). Si le nombre d'objets dépasse le nombre d'entrées d'objet, cela est à l'origine de l'erreur.Voici un exemple de charge utile d'entrée :
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }
Dans la charge utile JSON illustrée ci-dessus, la 6e entrée se produit à la ligne 7 (entreprise). Étant donné que le nombre d'entrées d'objet dans la charge utile JSON d'entrée est supérieur à 5 (valeur spécifiée pour l'élément
<ObjectEntryCount>
), vous obtenez l'erreur suivante :JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Solution
Si la règle JSONThreatProtection a été conçue pour protéger contre les charges utiles avec un nombre d'entrée d'objet dépassant un seuil spécifique, le message d'erreur est alors attendu. Dans ce cas, aucune action supplémentaire n'est requise de votre part.
Toutefois, si vous pensez pouvoir inclure davantage d'entrées d'objet dans la charge utile sans aucune conséquence, remplacez <ObjectEntryCount>
par une valeur adaptée à vos besoins.
Par exemple, si vous pensez pouvoir autoriser jusqu'à 10 entrées d'objets, modifiez la règle JSONThreatProtection comme suit :
<?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>
Nombre d'éléments de tableau dépassé
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Exemple de corps de réponse d'erreur
{
"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"
}
}
}
Cause
Cette erreur se produit si la charge utile du message d'entrée spécifiée par l'élément <Source>
contient un tableau JSON avec un nombre d'éléments supérieur au nombre spécifié dans l'élément <ArrayElementCount>
de la règle.
Par exemple, si l'élément <ArrayElementCount>
est défini sur 3
, mais que la charge utile d'entrée contient un tableau JSON comportant plus de trois espaces de noms, cette erreur est générée.
Diagnostic
Examinez le message d'erreur pour identifier le nom de la règle et le numéro de ligne où la longueur du tableau est dépassée. Par exemple, dans le message d'erreur suivant, le nom de la règle est
JSON-Threat-Protection-1
et le numéro de ligne de la charge utile est3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Notez la valeur spécifiée pour l'élément
<ArrayElementCount>
de la règle (identifié à l'étape 1).Dans l'exemple de règle JSONThreatProtection suivant,
<ArrayElementCount>
est défini sur3
:<?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>
Examinez le numéro de ligne spécifique (identifié à l'étape 1) de la charge utile d'entrée et vérifiez si le tableau spécifié contient un nombre supérieur à celui spécifié dans l'élément
<ArrayElementCount>
(identifié à l'étape 2). Si le nombre d'éléments de tableau est supérieur à ce nombre, c'est la cause de l'erreur.Voici un exemple de charge utile d'entrée :
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
La charge utile JSON ci-dessus contient cinq éléments dans le tableau nommé
models
à la ligne 3. Comme le nombre d'éléments de tableau est supérieur à 3 (la valeur spécifiée pour l'élément<ArrayElementCount>
), vous obtenez l'erreur suivante :JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Solution
Si la règle JSONThreatProtection a été conçue pour protéger contre les charges utiles avec un seuil de nombre de tableaux spécifique, le message d'erreur est attendu. Dans ce cas, aucune autre action n'est requise.
Toutefois, si vous pensez qu'un nombre plus élevé d'éléments dans un tableau peut être autorisé, remplacez <ArrayElementCount>
par une valeur appropriée, en fonction de vos besoins.
Par exemple, si vous pensez pouvoir autoriser jusqu'à cinq éléments de tableau, modifiez la règle comme suit :
<?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>
Profondeur de conteneur dépassée
Corps de la réponse d'erreur
Le trafic de l'environnement d'exécution renvoie un code de réponse 500 avec l'erreur suivante :
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Exemple de corps de réponse d'erreur
{
"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"
}
}
}
Cause
Cette erreur se produit si la charge utile du message d'entrée spécifiée par l'élément <Source>
contient un objet JSON contenant lui-même des éléments JSON avec une profondeur de conteneur qui dépasse la profondeur maximale de conteneur spécifiée dans l'élément <ContainerDepth>
de la règle. La profondeur de conteneur correspond à la profondeur imbriquée maximale autorisée pour les éléments JSON. Par exemple, un tableau contenant un objet contenant lui-même un objet donnerait une profondeur de conteneur de 3.
Par exemple, si l'élément <ContainerDepth>
est défini sur 3
, mais que la charge utile de l'entrée présente une profondeur de conteneur qui dépasse cette limite, cette erreur est générée.
Diagnostic
Examinez le message d'erreur pour identifier le nom de la règle JSONThreatProtection et le numéro de ligne où la profondeur de conteneur est dépassée. Par exemple, dans le message d'erreur suivant, le nom de la règle est
JSON-Threat-Protection-1
et le numéro de ligne de la charge utile est5
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Notez la valeur spécifiée pour l'élément
<ContainerDepth>
(identifié à l'étape 1).Dans l'exemple de règle JSONThreatProtection suivant,
<ContainerDepth>
est défini sur5
:<?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>
Examinez le numéro de ligne spécifique (identifié à l'étape 1) de la charge utile d'entrée et vérifiez si la profondeur de conteneur dans la charge utile est supérieure à la valeur spécifiée dans l'élément
<ContainerDepth>
(identifié à l'étape 2). Si la profondeur de conteneur dépasse le nombre, il s'agit de la cause de l'erreur.Voici un exemple de charge utile d'entrée :
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
La charge utile JSON ci-dessus a une profondeur de conteneur de 6 à la ligne 5. Comme la profondeur est supérieure à 5, la valeur spécifiée pour l'élément
<ContainerDepth>
de la règle JSONThreatProtection vous obtenez l'erreur suivante :JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Solution
Si la règle JSONThreatProtection a été conçue pour protéger contre les charges utiles dont les profondeurs de conteneur dépassent la valeur spécifiée, le message d'erreur est attendu. Dans ce cas, aucune autre action n'est requise.
Toutefois, si vous pensez qu'une profondeur de conteneur plus élevée est acceptable, remplacez <ContainerDepth>
par une valeur adaptée à vos besoins.
Par exemple, si vous pensez pouvoir autoriser des profondeurs de conteneur jusqu'à 10, modifiez la règle comme suit :
<?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>
Longueur de valeur de chaîne dépassée
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Exemple de corps de réponse d'erreur
{
"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"
}
}
}
Cause
Cette erreur se produit si la charge utile du message d'entrée spécifiée par l'élément <Source>
contient des éléments JSON ayant des valeurs avec plus de caractères que ne l'autorise l'élément <StringValueLength>
.
Par exemple, cette erreur est générée si l'élément <StringValueLength>
est défini sur 50
dans la règle, mais que la charge utile d'entrée contient un ou plusieurs éléments dont les valeurs contiennent plus de 50 caractères.
Diagnostic
Examinez le message d'erreur pour identifier le nom de la règle et le numéro de ligne où la longueur de la chaîne est dépassée. Dans l'exemple suivant, le nom de la règle est
JSON-Threat-Protection-1 and
et la ligne dans la charge utile est3
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Notez la valeur spécifiée pour l'élément
<StringValueLength>
(identifié à l'étape 1).Dans l'exemple de règle JSONThreatProtection suivant,
<StringValueLength>
est défini sur50
:<?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>
Examinez le numéro de ligne spécifique (identifié à l'étape 1) de la charge utile d'entrée et vérifiez si la longueur de la valeur est supérieure au nombre de caractères spécifié pour l'élément
<StringValueLength>
(identifié à l'étape 2). Si la longueur de la valeur dépasse la limite, il s'agit de la cause de l'erreur.Voici un exemple de charge utile d'entrée :
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
La charge utile JSON présentée ci-dessus possède un objet nommé
Place Name
dont la valeurTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
contient 85 caractères à la ligne 3. Comme la longueur de la valeur est supérieure à 50, valeur spécifiée dans l'élément<StringValueLength>
, vous obtenez l'erreur suivante :JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Solution
Si la règle JSONThreatProtection a été conçue pour protéger contre les charges utiles avec des valeurs dépassant une longueur de chaîne spécifique, le message d'erreur est attendu. Dans ce cas, aucune autre action n'est requise.
Toutefois, si vous constatez qu'une valeur plus longue peut être spécifiée dans la charge utile, modifiez la valeur de <StringValueLength>
avec une valeur appropriée en fonction de vos besoins.
Par exemple, si vous pensez pouvoir autoriser une valeur pouvant atteindre 90, modifiez la règle comme suit :
<?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>
Objet JSON non valide
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Exemple de corps de réponse d'erreur
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Cause
Cette erreur se produit si la charge utile du message d'entrée spécifiée par l'élément <Source>
dans la règle JSONThreatProtection n'est pas un objet JSON valide.
Diagnostic
Examinez le message d'erreur pour identifier le nom de la règle et le numéro de la ligne où l'erreur s'est produite. Dans l'exemple suivant, le nom de la règle est
JSON-Threat-Protection-1 and
et la ligne dans la charge utile est2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Examinez le numéro de ligne spécifique (identifié à l'étape 1) de la charge utile d'entrée et vérifiez si l'objet JSON transmis dans la charge utile est bien un objet JSON valide.
Voici un exemple de charge utile d'entrée :
{ "Longitude": 6.11499, "Latitude" 50.76891 }
Dans la charge utile JSON présentée ci-dessus, la ligne 3 ne contient pas
":"
(deux-points). Comme il ne s'agit pas d'un objet JSON valide, vous obtenez l'erreur suivante :JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Solution
Vérifiez la validité des charges utiles JSON d'entrée transmises aux proxys d'API incluant la règle JSONThreatProtection.
Pour l'exemple décrit ci-dessus, modifiez la charge utile JSON comme suit :
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Code d'erreur
steps.jsonthreatprotection.SourceUnavailable
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Exemple de corps de réponse d'erreur
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
Cause
Cette erreur se produit si la variable message spécifiée dans l'élément <Source>
de la règle JSONThreatProtection :
- est hors de portée (non disponible dans le flux spécifique où la règle est exécutée)
- n'est pas une des valeurs valides
request
,response
oumessage
Par exemple, cette erreur se produit si l'élément <Source>
de la règle est défini sur une variable qui n'existe pas dans le flux où la règle est exécutée.
Diagnostic
Identifiez le nom de la règle et le nom de la variable source dans le message d'erreur. Par exemple, dans le message d'erreur suivant, le nom de la règle est
JSON-Threat-Protection-1
et la variable source estrequests
.JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Examinez la valeur spécifiée pour l'élément
<Source>
identifié à l'étape 1.Dans l'exemple de règle JSONThreatProtection suivant, l'élément
<Source>
est défini surrequests
.<?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>
Les valeurs valides pour l'élément
<Source>
sontrequest
,response
oumessage
. Comme "requêtes" n'est pas une valeur valide et n'existe pas dans le flux où la règle est exécutée, vous obtenez l'erreur :JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Solution
Assurez-vous que la variable définie dans l'élément <Source>
de la règle JSONThreatProtection ayant échoué est définie sur request
, response
ou message
, et qu'elle existe dans le flux où la règle s'exécute.
Pour corriger l'exemple de stratégie JSONThreatProtection présenté ci-dessus, vous pouvez modifier l'élément <Source>
afin d'utiliser la variable request
, car il existe dans le flux de requête :
<?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
Code d'erreur
steps.jsonthreatprotection.NonMessageVariable
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Exemple de corps de réponse d'erreur
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
Cause
Cette erreur se produit si l'élément <Source>
de la règle JSONThreatProtection est défini sur une variable qui n'est pas de type message.
Les variables de type Message représentent des requêtes et des réponses HTTP entières. Les variables de flux Apigee Edge intégrées "requête", "réponse" et "message" sont de type message. Pour en savoir plus sur les variables de message, consultez la documentation de référence sur les variables.
Diagnostic
Identifiez le nom de la règle JSONThreatProtection et le nom de la variable source dans le message d'erreur. Par exemple, dans le message d'erreur suivant, le nom de la règle est
JSON-Threat-Protection-1
et la variable source estmessage.content
.JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Examinez l'élément
<Source>
de la stratégie JSONThreatProtection (identifiée à l'étape 1).Dans l'exemple de stratégie JSONThreatProtection suivant,
<Source>
est défini surmessage.content
au lieu 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>
Comme
message.content
n'est pas du type message, vous obtenez l'erreur suivante :JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Solution
Vérifiez que l'élément <Source>
de la règle JSONThreatProtection ayant échoué est défini sur une variable de flux de type Message qui existe dans le flux où la règle s'exécute.
Pour corriger la règle, vous pouvez modifier l'élément <Source>
afin de spécifier une variable de type message. Par exemple, dans la règle JSONThreatProtection ayant échoué, vous pouvez spécifier l'élément <Source>
en tant que 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>