Risoluzione dei problemi relativi agli errori di runtime di JSON Threat Protection

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.

ExecutionFailed

Codice di errore

steps.jsonthreatprotection.ExecutionFailed

Corpo della risposta di errore

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

Tipi di errori e possibili cause

La policy JSONThreatProtection può generare molti tipi diversi di errori ExecutionFailed. La tabella seguente elenca i diversi tipi di errori e le relative cause possibili:

Tipo di errore Causa
Lunghezza del nome della voce dell'oggetto superata È stata superata la lunghezza massima della stringa consentita nel nome della voce di un oggetto.
Conteggio voci oggetto superato È stato superato il numero massimo di voci consentito in un oggetto.
È stato superato il numero di elementi dell'array È stato superato il numero massimo di elementi consentiti in un array.
Profondità del contenitore superata È stata superata la profondità massima di annidamento consentita.
Lunghezza del valore della stringa superata La lunghezza massima consentita per un valore stringa è stata superata.
Oggetto JSON non valido Il payload JSON di input non è valido.

Lunghezza del nome della voce dell'oggetto superata

Corpo della risposta di errore

{
    "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"
        }
    }
}

Esempio di corpo della risposta di errore

{
    "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

Questo errore si verifica se il payload del messaggio di input specificato dall'elemento <Source> contiene un oggetto JSON con un nome di proprietà che supera la lunghezza massima specificata nell'elemento <ObjectEntryNameLength>.

Ad esempio, se l'elemento <ObjectEntryNameLength> è specificato come 5 nel criterio, ma il payload del messaggio di input ha una proprietà JSON il cui nome supera i 5 caratteri, viene generato questo errore.

Diagnosi

  1. Esamina il messaggio di errore per identificare il nome del criterio JSONThreatProtection e il numero di riga in cui si verifica il nome della voce lunga. Ad esempio, nel seguente messaggio di errore, il nome della policy JSONThreatProtection è JSON-Threat-Protection-1 e il numero di riga nel payload è 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    
  2. Esamina il criterio che hai identificato nel passaggio 1 e prendi nota del valore specificato nell'elemento <ObjectEntryNameLength>.

    Ad esempio, nella seguente policy JSONThreatProtection, <ObjectEntryNameLength> è impostato su 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>5</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Esamina il numero di riga specifico (identificato nel passaggio 1) del payload di input e controlla se la lunghezza del nome dell'oggetto è maggiore del valore specificato nell'elemento <ObjectEntryNameLength> (identificato nel passaggio 2). Se la lunghezza del nome dell'oggetto supera questo numero, questo è il motivo dell'errore.

    Ecco un esempio di payload di input:

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

    Il payload JSON mostrato sopra ha una proprietà denominata number alla riga 2 che contiene 6 caratteri (la lunghezza del nome è 6). Poiché la lunghezza del nome dell'oggetto è maggiore di 5 (il valore specificato per l'elemento <ObjectEntryNameLength>), viene visualizzato il seguente errore:

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

Risoluzione

Se il criterio JSONThreatProtection è stato progettato per proteggere dai payload con nomi di voci di oggetti che superano il valore definito, il messaggio di errore è previsto. In questo caso, non è richiesta alcuna azione aggiuntiva.

Tuttavia, se determini che è possibile specificare nomi di voci di oggetti più lunghi nel payload senza alcuna conseguenza, modifica <ObjectEntryNameLength> con un valore appropriato in base ai tuoi requisiti.

Ad esempio, se ritieni di poter consentire nomi di oggetti fino a una lunghezza di 10 caratteri, modifica la norma JSONThreatProtection nel seguente modo:

<?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>

Numero di voci dell'oggetto superato

Corpo della risposta di errore

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

Esempio di corpo della risposta di errore

{
    "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

Questo errore si verifica se il payload del messaggio di input specificato dall'elemento <Source> contiene un oggetto JSON che contiene più voci (proprietà) rispetto al valore specificato nell'elemento <ObjectEntryCount> del criterio.

Ad esempio, se l'elemento <ObjectEntryCount> è 5, ma il payload JSON di input ha più di 5 voci, viene generato questo errore.

Diagnosi

  1. Esamina il messaggio di errore per identificare il nome del criterio JSONThreatProtection e il numero di riga in cui viene superato il conteggio delle voci. Ad esempio, nel seguente messaggio di errore, il nome della policy è JSON-Threat-Protection-1 e il numero di riga nel payload è 7:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count
    at line 7
    
  2. Prendi nota del valore specificato nell'elemento <ObjectEntryCount> del criterio (identificato nel passaggio 1).

    Nel seguente esempio di criterio, <ObjectEntryCount> è impostato su 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Esamina il numero di riga specifico (identificato nel passaggio 1) del payload di input e verifica se il numero di entità nel payload è maggiore del valore specificato per l'elemento <ObjectEntryCount> (identificato nel passaggio 2). Se il numero di oggetti supera il conteggio delle voci degli oggetti, questo è il motivo dell'errore.

    Ecco un esempio di payload di input:

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

    Nel payload JSON mostrato sopra, la sesta voce si trova alla riga 7 (azienda). Poiché il conteggio delle voci dell'oggetto nel payload JSON di input è maggiore di 5 (il valore specificato per l'elemento <ObjectEntryCount>), viene visualizzato il seguente errore:

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

Risoluzione

Se il criterio JSONThreatProtection è stato progettato per proteggere dai payload con un numero di voci di oggetti che supera una soglia specifica, il messaggio di errore è previsto. In questo caso, non è necessaria alcuna azione aggiuntiva.

Tuttavia, se determini che è possibile includere più voci di oggetti nel payload senza conseguenze, modifica <ObjectEntryCount> con un valore appropriato in base ai tuoi requisiti.

Ad esempio, se ritieni di poter consentire fino a 10 voci di oggetti, modifica la policy JSONThreatProtection nel seguente modo:

<?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>

Numero di elementi dell'array superato

Corpo della risposta di errore

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

Esempio di corpo della risposta di errore

{
    "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

Questo errore si verifica se il payload del messaggio di input specificato dall'elemento <Source> contiene un array JSON con un numero di elementi superiore a quello specificato nell'elemento <ArrayElementCount> del criterio.

Ad esempio, se l'elemento <ArrayElementCount> è specificato come 3, ma il payload di input ha un array JSON con più di 3 elementi, viene generato questo errore.

Diagnosi

  1. Esamina il messaggio di errore per identificare il nome della policy e il numero di riga in cui viene superata la lunghezza dell'array. Ad esempio, nel seguente messaggio di errore, il nome della policy è JSON-Threat-Protection-1 e il numero di riga nel payload è 3:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
    
  2. Prendi nota del valore specificato per l'elemento <ArrayElementCount> del criterio (identificato nel passaggio 1).

    Nel seguente esempio di policy JSONThreatProtection, <ArrayElementCount> è impostato su 3:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>12</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>6</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Esamina il numero di riga specifico (identificato nel passaggio 1) del payload di input e verifica se l'array specificato ha un conteggio superiore al numero specificato nell'elemento <ArrayElementCount> (identificato nel passaggio 2). Se il numero di elementi dell'array supera il conteggio, questo è il motivo dell'errore.

    Ecco un esempio di payload di input:

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

    Il payload JSON mostrato sopra contiene 5 elementi nell'array denominato models alla riga 3. Poiché il numero di elementi dell'array è maggiore di 3 (il valore specificato per l'elemento <ArrayElementCount>), viene visualizzato il seguente errore:

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

Risoluzione

Se la norma JSONThreatProtection è stata pensata per proteggere dai payload con una soglia specifica di conteggio degli array, il messaggio di errore è previsto. In questo caso, non è richiesta alcuna azione aggiuntiva.

Tuttavia, se determini che è possibile consentire un numero maggiore di elementi in un array, modifica <ArrayElementCount> con un valore appropriato in base ai tuoi requisiti.

Ad esempio, se ritieni di poter consentire fino a 5 elementi dell'array, modifica la policy nel seguente modo:

<?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>

Profondità del contenitore superata

Corpo della risposta di errore

Il traffico di runtime restituisce un codice di risposta 500 con il seguente errore:

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

Esempio di corpo della risposta di errore

{
    "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

Questo errore si verifica se il payload del messaggio di input specificato dall'elemento <Source> contiene un oggetto JSON che contiene elementi JSON con una profondità del contenitore che supera la profondità massima del contenitore specificata nell'elemento <ContainerDepth> del criterio. La profondità del contenitore è la profondità massima consentita per gli elementi JSON nidificati. Ad esempio, un array contenente un oggetto che contiene un oggetto comporterebbe una profondità di contenimento pari a 3.

Ad esempio, se l'elemento <ContainerDepth> è 3, ma il payload di input ha una profondità del contenitore che supera questo limite, viene generato questo errore.

Diagnosi

  1. Esamina il messaggio di errore per identificare il nome della policy JSONThreatProtection e il numero di riga in cui viene superata la profondità del contenitore. Ad esempio, nel seguente messaggio di errore, il nome della policy è JSON-Threat-Protection-1 e il numero di riga nel payload è 5.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    
  2. Prendi nota del valore specificato per l'elemento <ContainerDepth> (identificato nel passaggio 1).

    Nel seguente esempio di policy JSONThreatProtection, <ContainerDepth> è impostato su 5:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Esamina il numero di riga specifico (identificato nel passaggio 1) del payload di input e verifica se la profondità del contenitore nel payload è superiore al valore specificato nell'elemento <ContainerDepth> (identificato nel passaggio 2). Se la profondità del contenitore supera il conteggio, questo è il motivo dell'errore.

    Ecco un esempio di payload di input:

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

    Il payload JSON mostrato sopra ha una profondità del contenitore di 6 alla riga 5. Poiché depth è maggiore di 5, il valore specificato per l'elemento <ContainerDepth> del criterio JSONThreatProtection viene visualizzato il seguente errore:

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

Risoluzione

Se il criterio JSONThreatProtection è stato progettato per proteggere dai payload con profondità del contenitore superiori al valore specificato, il messaggio di errore è previsto. In questo caso, non è richiesta alcuna azione aggiuntiva.

Tuttavia, se ritieni che profondità del contenitore maggiori siano accettabili, modifica <ContainerDepth> con un valore appropriato in base ai tuoi requisiti.

Ad esempio, se ritieni di poter consentire profondità dei contenitori fino a 10, modifica la norma nel seguente modo:

<?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>

Lunghezza del valore della stringa superata

Corpo della risposta di errore

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

Esempio di corpo della risposta di errore

{
    "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

Questo errore si verifica se il payload del messaggio di input specificato dall'elemento <Source> contiene elementi JSON con valori con più caratteri di quelli consentiti dall'elemento <StringValueLength>.

Ad esempio, se l'elemento <StringValueLength> è impostato su 50 nel criterio, ma il payload di input contiene uno o più elementi i cui valori contengono più di 50 caratteri, viene generato questo errore.

Diagnosi

  1. Esamina il messaggio di errore per identificare il nome del criterio e il numero di riga in cui la lunghezza della stringa è stata superata. Nel seguente esempio, il nome della policy è JSON-Threat-Protection-1 and nella riga del payload 3.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
    
  2. Prendi nota del valore specificato per l'elemento <StringValueLength> in (identificato nel passaggio 1).

    Nell'esempio di policy JSONThreatProtection seguente, <StringValueLength> è impostato su 50:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
        <DisplayName>JSON Threat Protection-1</DisplayName>
        <Properties/>
        <ArrayElementCount>3</ArrayElementCount>
        <ContainerDepth>5</ContainerDepth>
        <ObjectEntryCount>5</ObjectEntryCount>
        <ObjectEntryNameLength>20</ObjectEntryNameLength>
        <Source>request</Source>
        <StringValueLength>50</StringValueLength>
    </JSONThreatProtection>
    
  3. Esamina il numero di riga specifico (identificato nel passaggio 1) del payload di input e verifica se la lunghezza del valore è maggiore del numero di caratteri specificato per l'elemento <StringValueLength> (identificato nel passaggio 2). Se la lunghezza del valore supera il limite, questo è il motivo dell'errore.

    Ecco un esempio di payload di input:

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

    Il payload JSON mostrato sopra ha un oggetto denominato Place Name il cui valore Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu ha 85 caratteri alla riga 3. Poiché la lunghezza del valore è maggiore di 50, il valore specificato nell'elemento <StringValueLength> viene visualizzato il seguente errore:

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

Risoluzione

Se il criterio JSONThreatProtection è stato progettato per proteggere dai payload con valori che superano una lunghezza specifica della stringa, il messaggio di errore è previsto. In questo caso, non è richiesta alcuna azione aggiuntiva.

Tuttavia, se determini che è possibile specificare una lunghezza del valore maggiore nel payload, modifica <StringValueLength> con un valore adatto in base ai tuoi requisiti.

Ad esempio, se ritieni di poter consentire un valore fino a una lunghezza di 90, modifica la norma nel seguente modo:

<?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>

Oggetto JSON non valido

Corpo della risposta di errore

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

Esempio di corpo della risposta di errore

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

Causa

Questo errore si verifica se il payload del messaggio di input specificato dall'elemento <Source> nel criterio JSONThreatProtection non è un oggetto JSON valido.

Diagnosi

  1. Esamina il messaggio di errore per identificare il nome della norma e il numero di riga in cui si è verificato l'errore. Nel seguente esempio, il nome della policy è JSON-Threat-Protection-1 and nella riga del payload 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. Esamina il numero di riga specifico (identificato nel passaggio 1) del payload di input e verifica se l'oggetto JSON passato nel payload è effettivamente un oggetto JSON valido.

    Ecco un esempio di payload di input:

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

    Nel payload JSON mostrato sopra, la riga 3 non contiene ":" (due punti). Poiché non è un oggetto JSON valido, viene visualizzato l'errore:

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

Risoluzione

Assicurati che un payload JSON di input valido venga trasmesso a qualsiasi proxy API che includa il criterio JSONThreatProtection.

Per l'esempio descritto sopra, modifica il payload JSON nel seguente modo:

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

SourceUnavailable

Codice di errore

steps.jsonthreatprotection.SourceUnavailable

Corpo della risposta di errore

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

Esempio di corpo della risposta di errore

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

Causa

Questo errore si verifica se la variabile message specificata nell'elemento <Source> del criterio JSONThreatProtection è:

  • Al di fuori dell'ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio)
  • Non è uno dei valori validi request, response o message

Ad esempio, questo errore si verifica se l'elemento <Source> nel criterio è impostato su una variabile che non esiste nel flusso in cui viene eseguito il criterio.

Diagnosi

  1. Identifica il nome della norma e della variabile Origine dal messaggio di errore. Ad esempio, nel seguente messaggio di errore, il nome della policy è JSON-Threat-Protection-1 e la variabile Source è requests:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    
  2. Esamina il valore specificato per l'elemento <Source> identificato nel passaggio 1.

    Nell'esempio di policy JSONThreatProtection seguente, l'elemento <Source> è impostato su requests.

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

    I valori validi per l'elemento <Source> sono request, response o message. Poiché requests non è un valore valido e non esiste nel flusso in cui viene eseguita la norma, viene visualizzato l'errore:

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

Risoluzione

Assicurati che la variabile impostata nell'elemento <Source> del criterio JSONThreatProtection non riuscito sia impostata su request, response o message ed esista nel flusso in cui viene eseguito il criterio.

Per correggere l'esempio di criterio JSONThreatProtection mostrato sopra, puoi modificare l'elemento <Source> per utilizzare la variabile request, perché esiste nel flusso di richiesta:

<?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

Codice di errore

steps.jsonthreatprotection.NonMessageVariable

Corpo della risposta di errore

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

Esempio di corpo della risposta di errore

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

Causa

Questo errore si verifica se l'elemento <Source> nel criterio JSONThreatProtection è impostato su una variabile di tipo diverso da message.

Le variabili di tipo di messaggio rappresentano intere richieste e risposte HTTP. Le variabili di flusso Apigee integrate request, response e message sono di tipo message. Per scoprire di più sulle variabili dei messaggi, consulta il riferimento alle variabili.

Diagnosi

  1. Identifica il nome della policy JSONThreatProtection e il nome della variabile Source dal messaggio di errore. Ad esempio, nel seguente messaggio di errore, il nome della policy è JSON-Threat-Protection-1 e la variabile Source è message.content:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
    
  2. Esamina l'elemento <Source> del criterio JSONThreatProtection (identificato nel passaggio 1).

    Nel seguente esempio di policy JSONThreatProtection, <Source> è impostato su message.content anziché su message:

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

    Poiché message.content non è di tipo messaggio, viene visualizzato l'errore:

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

Risoluzione

Assicurati che l'elemento <Source> nel criterio JSONThreatProtection non riuscito sia impostato su una variabile di flusso di tipo messaggio esistente nel flusso in cui viene eseguito il criterio.

Per correggere la policy, puoi modificare l'elemento <Source> per specificare una variabile di tipo messaggio. Ad esempio, nel JSONThreatProtection non riuscito potresti specificare l'elemento <Source> come 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>