Esta é a documentação da Apigee e da Apigee híbrida.
Confira a documentação da Apigee Edge.
ExecutionFailed
Código de erro
steps.jsonthreatprotection.ExecutionFailed
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Tipos de erros e possíveis causas
A política JSONThreatProtection pode gerar muitos tipos diferentes de erros ExecutionFailed. A tabela abaixo lista os tipos diferentes de erros e as possíveis causas:
Tipo de erro | Causa |
Comprimento do nome de entrada do objeto excedido | O comprimento máximo de string permitido no nome de entrada de um objeto foi excedido. |
Contagem de entradas de objeto excedida | O número máximo de entradas permitidas em um objeto foi excedido. |
Contagem de elementos da matriz excedida | O número máximo de elementos permitidos em uma matriz foi excedido. |
Profundidade de contêiner excedida | A profundidade aninhada permitida foi excedida. |
Comprimento do valor de string excedido | O comprimento máximo permitido para um valor de string foi excedido. |
Objeto JSON inválido | O payload JSON de entrada é inválido. |
Comprimento do nome de entrada do objeto excedido
Corpo da resposta de erro
{ "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" } } }
Exemplo de corpo da resposta de erro
{
"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
Esse erro ocorrerá se o payload da mensagem de entrada especificado pelo elemento <Source>
contiver um objeto JSON com um nome de propriedade que exceda o comprimento máximo especificado no elemento <ObjectEntryNameLength>
.
Por exemplo, se o elemento <ObjectEntryNameLength>
for especificado como "5" na política, mas o payload da mensagem de entrada tiver uma propriedade JSON com um nome maior que cinco caracteres, esse erro será exibido.
Diagnóstico
Examine a mensagem de erro para identificar o nome da política JSONThreatProtection e o número da linha em que o nome de entrada maior que o especificado ocorre. Por exemplo, na mensagem de erro a seguir, o nome da política JSONThreatProtection é
JSON-Threat-Protection-1
e o número da linha no payload é "2".JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Analise a política identificada na etapa 1 e anote o valor especificado no elemento
<ObjectEntryNameLength>
.Por exemplo, na política JSONThreatProtection a seguir,
<ObjectEntryNameLength>
é definido 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>5</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Analise o número da linha específico (identificado na etapa 1) do payload de entrada e verifique se o comprimento do nome do objeto é maior que o valor especificado no elemento
<ObjectEntryNameLength>
(identificado na etapa 2). Se o comprimento do nome do objeto exceder esse número, essa será a causa do erro.Veja um exemplo de payload de entrada:
{ "number" : 500, "string" : "text" }
O payload JSON mostrado acima tem uma propriedade chamada
number
na linha 2, que tem seis caracteres (o comprimento do nome é 6). Como o comprimento do nome do objeto é maior que 5 (o valor especificado para o elemento<ObjectEntryNameLength>
), você verá o seguinte erro:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Resolução
Se a política JSONThreatProtection foi criada para evitar que payloads tenham nomes de entrada de objeto maiores que o valor definido, a mensagem de erro é esperada. Nesse caso, nenhuma outra ação é necessária.
No entanto, se você determinar que nomes de entrada de objeto maiores podem ser especificados no payload sem qualquer consequência, modifique o <ObjectEntryNameLength>
para um valor adequado com base nos requisitos.
Por exemplo, se você quiser permitir nomes de objeto de até 10 caracteres, modifique a política JSONThreatProtection da seguinte maneira:
<?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>
Contagem de entradas de objeto excedida
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Exemplo de corpo da resposta de erro
{
"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
Esse erro ocorrerá se o payload da mensagem de entrada especificado pelo elemento <Source>
contiver um objeto JSON que contenha mais entradas (propriedades) do que o valor especificado no elemento <ObjectEntryCount>
da política.
Por exemplo, se o elemento <ObjectEntryCount>
for "5", mas o payload JSON de entrada tiver mais de cinco entradas, esse erro será gerado.
Diagnóstico
Examine a mensagem de erro para identificar o nome da política JSONThreatProtection e o número da linha em que a contagem de entradas é excedida. Por exemplo, na seguinte mensagem de erro, o nome da política é
JSON-Threat-Protection-1
e o número da linha no payload é7
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Anote o valor especificado no elemento
<ObjectEntryCount>
da política (identificado na etapa 1).No exemplo de política a seguir,
<ObjectEntryCount>
está definido 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>
Verifique o número da linha específico (identificado na etapa 1) do payload de entrada e verifique se o número de entidades no payload é maior que o valor especificado para o elemento
<ObjectEntryCount>
(identificado na etapa 2). Se o número de objetos excede a contagem de entradas de objeto, essa é a causa do erro.Veja um exemplo de payload de entrada:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }
No payload JSON mostrado acima, a sexta entrada ocorre na linha no 7 (empresa). Como a contagem das entradas de objeto no payload JSON de entrada é maior que cinco (o valor especificado para o elemento
<ObjectEntryCount>
), você recebe o seguinte erro:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Resolução
Se a política JSONThreatProtection foi criada para evitar que payloads tenham um número de entradas de objeto que exceda um limite específico, a mensagem de erro é esperada. Nesse caso, você não precisa fazer nada.
No entanto, se você determinar que mais entradas de objeto podem ser incluídas no payload sem nenhuma consequência, modifique <ObjectEntryCount>
para um valor adequado com base nos requisitos.
Por exemplo, se você quiser permitir até 10 entradas de objeto, modifique a política JSONThreatProtection da seguinte maneira:
<?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>
Contagem de elementos da matriz excedida
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Exemplo de corpo da resposta de erro
{
"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
Esse erro ocorrerá se o payload da mensagem de entrada especificado pelo elemento <Source>
contiver uma matriz JSON com um número de elementos maior que o número especificado no elemento <ArrayElementCount>
da política.
Por exemplo, se o elemento <ArrayElementCount>
for especificado como 3
, mas o payload de entrada tiver uma matriz JSON com mais de três elementos, esse erro será gerado.
Diagnóstico
Examine a mensagem de erro para identificar o nome da política e o número da linha em que o comprimento da matriz foi excedido. Por exemplo, na seguinte mensagem de erro, o nome da política é
JSON-Threat-Protection-1
e o número da linha no payload é3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Anote o valor especificado do elemento
<ArrayElementCount>
da política (identificado na etapa 1).No exemplo da política JSONThreatProtection a seguir,
<ArrayElementCount>
está definido 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>
Analise o número da linha específico (identificado na etapa 1) do payload de entrada e verifique se a matriz especificada tem uma quantia maior que o número especificado no elemento
<ArrayElementCount>
(identificado na etapa 2). Se o número de elementos da matriz exceder a contagem, essa será a causa do erro.Veja um exemplo de payload de entrada:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
O payload JSON mostrado acima tem cinco elementos na matriz chamada
models
na linha 3. Como o número de elementos da matriz é maior que 3 (o valor especificado para o elemento<ArrayElementCount>
), você receberá o seguinte erro:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Resolução
Se a política JSONThreatProtection foi criada para evitar que payloads tenham um limite de contagem de matriz específico, a mensagem de erro é esperada. Nesse caso, não é necessário fazer nada.
No entanto, se você determinar que é permitido um número maior de elementos em uma matriz, modifique <ArrayElementCount>
para um valor adequado com base nos requisitos.
Por exemplo, se você quiser permitir até cinco elementos de matriz, modifique a política da seguinte maneira:
<?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>
Profundidade de contêiner excedida
Corpo da resposta de erro
O tráfego do ambiente de execução retorna um código de resposta 500 com o seguinte erro:
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Exemplo de corpo da resposta de erro
{
"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 erro ocorre se o payload da mensagem de entrada especificado pelo elemento <Source>
contiver um objeto JSON que contenha elementos JSON com uma profundidade de contêiner que excede a profundidade máxima do contêiner especificada no elemento <ContainerDepth>
da política. A profundidade de contêiner é a profundidade aninhada máxima permitida para elementos JSON. Por exemplo, uma matriz que contém um objeto com outro objeto resultaria em uma profundidade de contenção 3.
Por exemplo, se o elemento <ContainerDepth>
for 3
, mas o payload de entrada tiver uma profundidade de contêiner que exceda esse limite, esse erro será gerado.
Diagnóstico
Examine a mensagem de erro para identificar o nome da política JSONThreatProtection e o número da linha em que a profundidade de contêiner foi excedida. Por exemplo, na mensagem de erro a seguir, o nome da política é
JSON-Threat-Protection-1
e o número da linha no payload é5
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Anote o valor especificado para o elemento
<ContainerDepth>
(identificado na etapa 1).No exemplo da política JSONThreatProtection a seguir,
<ContainerDepth>
está definido 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>
Examine o número da linha específica (identificado na etapa 1) do payload de entrada e verifique se a profundidade de contêiner no payload é maior que o valor especificado no elemento
<ContainerDepth>
(identificado na etapa 2). Se a profundidade de contêiner exceder o valor, essa é a causa do erro.Veja um exemplo de payload de entrada:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
O payload JSON mostrado acima tem uma profundidade de contêiner de "6" na linha 5. Como a profundidade é maior que cinco, o valor especificado no elemento
<ContainerDepth>
da política JSONThreatProtection, você receberá o seguinte erro:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Resolução
Se a política JSONThreatProtection foi criada para evitar que payloads com profundidades de contêiner excedam o valor especificado, a mensagem de erro é esperada. Nesse caso, não é necessário fazer nada.
No entanto, se você determinar que profundidades de contêiner maiores são aceitáveis, modifique o <ContainerDepth>
para um valor adequado com base nos requisitos.
Por exemplo, se você quiser permitir profundidade de contêiner de até 10, modifique a política da seguinte maneira:
<?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>
Comprimento do valor de string excedido
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Exemplo de corpo da resposta de erro
{
"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 erro ocorre se o payload da mensagem de entrada especificado pelo elemento <Source>
contiver elementos JSON que tenham valores com mais caracteres do que o permitido pelo elemento <StringValueLength>
.
Por exemplo, se o elemento <StringValueLength>
estiver definido como 50
na política, mas o payload de entrada tiver um ou mais elementos com valores que contenham mais de 50 caracteres, esse erro será gerado.
Diagnóstico
Analise a mensagem de erro para identificar o nome da política e o número da linha em que o comprimento da string é excedido. No exemplo a seguir, o nome da política é
JSON-Threat-Protection-1 and
no payload3
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Anote o valor especificado do elemento
<StringValueLength>
no (identificado na etapa 1).No exemplo da política JSONThreatProtection a seguir,
<StringValueLength>
está definido como50
:<?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>
Analise o número da linha específico (identificado na etapa 1) do payload de entrada e verifique se o comprimento do valor é maior que o número de caracteres especificados para o elemento
<StringValueLength>
(identificado na etapa 2). Se o comprimento do valor exceder o limite, essa será a causa do erro.Veja um exemplo de payload de entrada:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
O payload JSON mostrado acima tem um objeto chamado
Place Name
cujo valorTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
tem 85 caracteres na linha 3. Como o comprimento do valor é maior que 50, o valor especificado no elemento<StringValueLength>
, o seguinte erro é exibido:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Resolução
Se a política JSONThreatProtection foi criada para evitar que payloads tenham valores que excedam um comprimento de string específico, a mensagem de erro é esperada. Nesse caso, não é necessário fazer nada.
No entanto, se você determinar que um valor comprimento de maior pode ser especificado no payload, modifique o <StringValueLength>
para um valor adequado com base nos requisitos.
Por exemplo, se você quiser permitir um valor de até 90, modifique a política da seguinte maneira:
<?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 inválido
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Exemplo de corpo da resposta de erro
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Causa
Esse erro ocorre se o payload da mensagem de entrada especificado pelo elemento <Source>
na política JSONThreatProtection não é um objeto JSON válido.
Diagnóstico
Analise a mensagem de erro para identificar o nome da política e o número da linha em que o erro ocorreu. No exemplo a seguir, o nome da política é
JSON-Threat-Protection-1 and
no payload2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Examine o número da linha específico (identificado na etapa 1) do payload de entrada e verifique se o objeto JSON que foi transmitido no payload é, na verdade, um objeto JSON válido.
Veja um exemplo de payload de entrada:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
No payload JSON mostrado acima, a linha 3 não tem
":"
(dois-pontos). Como não é um objeto JSON válido, você receberá este erro:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Resolução
Verifique se um payload JSON de entrada válido é transmitido para qualquer proxy da API que inclua a política JSONThreatProtection.
Para o exemplo descrito acima, modifique o payload JSON da seguinte maneira:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Código de erro
steps.jsonthreatprotection.SourceUnavailable
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Exemplo de corpo da resposta de erro
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
Causa
Este erro ocorre se a variável message especificada no elemento <Source>
da política JSONThreatProtection:
- estiver fora do escopo (não disponível no fluxo específico em que a política está sendo executada);
- não for um dos valores válidos
request
,response
oumessage
.
Por exemplo, esse erro ocorrerá se o elemento <Source>
na política estiver definido como uma
variável que não exista no fluxo em que a política é executada.
Diagnóstico
Identifique o nome da política e o nome da variável de origem da mensagem de erro. Por exemplo, na seguinte mensagem de erro, o nome da política é
JSON-Threat-Protection-1
e a variável de origem érequests
:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Examine o valor especificado para o elemento
<Source>
identificado na etapa 1.No exemplo da política JSONThreatProtection a seguir, o elemento
<Source>
está definido 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>
Os valores válidos para o elemento
<Source>
sãorequest
,response
oumessage
. Como as solicitações não são um valor válido e não existem no fluxo em que a política está sendo executada, você receberá o erro:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Resolução
Verifique se a variável definida no elemento <Source>
da política JSONThreatProtection com falha está definida como request
, response
ou message
e existe no fluxo em que a política é executada.
Para corrigir a política JSONThreatProtection de exemplo mostrada acima, modifique o elemento <Source>
para usar a variável request
, porque ela existe no fluxo de solicitação:
<?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 erro
steps.jsonthreatprotection.NonMessageVariable
Corpo da resposta de erro
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Exemplo de corpo da resposta de erro
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
Causa
Esse erro ocorre se o elemento <Source>
na política JSONThreatProtection estiver
definido como uma variável que não seja do tipo message.
As variáveis do tipo Message representam solicitações e respostas HTTP completas. A solicitação de variáveis de fluxo, a resposta e a mensagem integradas da Apigee são do tipo mensagem. Para saber mais sobre variáveis de mensagem, consulte a Referência de variáveis.
Diagnóstico
Identifique o nome da política e o nome da variável de origem JSONThreatProtection na mensagem de erro. Por exemplo, na seguinte mensagem de erro, o nome da política é
JSON-Threat-Protection-1
e a variável de origem émessage.content
:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Examine o elemento
<Source>
da política JSONThreatProtection (identificado na etapa 1).No exemplo da política JSONThreatProtection a seguir,
<Source>
está definido comomessage.content
em vez 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>
Como
message.content
não é do tipo mensagem, você verá o erro:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Resolução
Verifique se o elemento <Source>
na política JSONThreatProtection com falha está
configurado como uma variável de fluxo de tipo message existente no fluxo em que a política é executada.
Para corrigir a política, modifique o elemento <Source>
para especificar uma variável
que seja do tipo mensagem. Por exemplo, no JSONThreatProtection com falha,
especifique o 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>