Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Выполнение не удалось
Код ошибки
steps.jsonthreatprotection.ExecutionFailed
Тело ответа об ошибке
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Виды ошибок и возможные причины
Политика JSONThreatProtection может вызывать множество различных типов ошибок ExecutionFailed. В таблице ниже перечислены различные типы ошибок и их возможные причины:
Тип ошибки | Причина |
Превышена длина имени записи объекта | Превышена максимальная длина строки, разрешенная в имени записи объекта. |
Превышено количество записей объектов | Превышено максимальное количество записей, разрешенное в объекте. |
Превышено количество элементов массива | Превышено максимально допустимое количество элементов в массиве. |
Превышена глубина контейнера | Превышена максимально допустимая глубина вложенности. |
Превышена длина строкового значения | Превышена максимальная длина строкового значения. |
Неверный объект JSON | Входная полезная нагрузка JSON недействительна. |
Превышена длина имени записи объекта
Тело ответа об ошибке
{ "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" } } }
Пример тела ответа об ошибке
{
"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.j
sonthreatprotection.ExecutionFailed"
}
}
}
Причина
Эта ошибка возникает, если полезные данные входного сообщения, указанные элементом <Source>
, содержат объект JSON с именем свойства, которое превышает максимальную длину, указанную в элементе <ObjectEntryNameLength>
.
Например, если в политике для элемента <ObjectEntryNameLength>
указано значение 5, но полезные данные входного сообщения имеют свойство JSON, имя которого превышает 5 символов, возникает эта ошибка.
Диагностика
Изучите сообщение об ошибке, чтобы определить имя политики JSONThreatProtection и номер строки, в которой встречается длинное имя записи. Например, в следующем сообщении об ошибке имя политики JSONThreatProtection —
JSON-Threat-Protection-1
, а номер строки в полезных данных — 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Изучите политику, которую вы определили на шаге 1, и обратите внимание на значение, указанное в элементе
<ObjectEntryNameLength>
.Например, в следующей политике JSONThreatProtection
<ObjectEntryNameLength>
установлено значение5
:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t; < DisplayNameJSON> <Threat Protection->1/Dis<playName P>ro<perties/ Ar>rayEl<ementCount3/Arra>y<ElementCount >Conta<inerDepth12/Container>D<epth ObjectEntryCo>unt5/<Object>EntryCo<unt > Obje<ctEntryNameLength>5/<ObjectEntryNameLen>g<th Sourcerequest/>S
ource StringValueLength50/StringValueLength /JSONThreatProtectionПроверьте конкретный номер строки (определенный на шаге 1) входных полезных данных и проверьте, превышает ли длина имени объекта значение, указанное в элементе
<ObjectEntryNameLength>
(определенном на шаге 2). Если длина имени объекта превышает это число, это является причиной ошибки.Вот пример входной полезной нагрузки:
{ "number" : 500, "stri
ng" : "text" }Полезная нагрузка JSON, показанная выше, имеет свойство с именем
number
в строке 2, которое содержит 6 символов (длина имени равна 6). Поскольку длина имени объекта превышает 5 (значение, указанное для элемента<ObjectEntryNameLength>
), вы получаете следующую ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Разрешение
Если политика JSONThreatProtection предназначена для защиты от полезных данных с именами записей объектов, которые превышают определенное значение, то ожидается сообщение об ошибке. В этом случае никаких дополнительных действий не требуется.
Однако если вы определите, что более длинные имена записей объекта могут быть указаны в полезных данных без каких-либо последствий, измените <ObjectEntryNameLength>
на подходящее значение в соответствии с вашими требованиями.
Например, если вы считаете, что можете разрешить имена объектов длиной до 10 символов, измените политику JSONThreatProtection следующим образом:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t;
< DisplayNameJSON> <Threat Protection->1/Dis<playName
P>ro<perties/
Ar>rayEl<ementCount3/Arra>y<ElementCount
>Conta<inerDepth12/Container>De<pth
ObjectEntryCou>nt5/O<bjectE>ntryCou<nt
>Objec<tEntryNameLength1>0/<ObjectEntryNameLen>g<th
Sourcerequest/>S
ource
StringValueLength50/StringValueLength
/JSONThreatProtection
Превышено количество записей объектов
Тело ответа об ошибке
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Пример тела ответа об ошибке
{
"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.j
sonthreatprotection.ExecutionFailed"
}
}
}
Причина
Эта ошибка возникает, если полезные данные входного сообщения, указанные элементом <Source>
, содержат объект JSON, который содержит больше записей (свойств), чем значение, указанное в элементе <ObjectEntryCount>
политики.
Например, если элемент <ObjectEntryCount>
равен 5, но входные полезные данные JSON содержат более 5 записей, возникает эта ошибка.
Диагностика
Изучите сообщение об ошибке, чтобы определить имя политики JSONThreatProtection и номер строки, в которой превышено количество записей. Например, в следующем сообщении об ошибке имя политики —
JSON-Threat-Protection-1
, а номер строки в полезных данных —7
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Запишите значение, указанное в элементе
<ObjectEntryCount>
политики (определенном на шаге 1).В следующем примере политики
<ObjectEntryCount>
установлено значение5
:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t; < DisplayNameJSON> <Threat Protection->1/Dis<playName P>ro<perties/ Ar>rayEl<ementCount3/Arra>y<ElementCount >Conta<inerDepth12/Container>D<epth ObjectEntryCo>unt5/<Object>EntryCo<unt > Obje<ctEntryNameLength>6/<ObjectEntryNameLen>g<th Sourcerequest/>S
ource StringValueLength50/StringValueLength /JSONThreatProtectionПроверьте конкретный номер строки (определенный на шаге 1) входных полезных данных и проверьте, превышает ли количество сущностей в полезных данных значение, указанное для элемента
<ObjectEntryCount>
(определенное на шаге 2). Если количество объектов превышает количество записей объектов, это и есть причина ошибки.Вот пример входной полезной нагрузки:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : &quo
t;New York", "country" : "USA", "company" : "Google" }В полезных данных JSON, показанных выше, шестая запись находится в строке №7 (компания). Поскольку количество записей объекта во входных полезных данных JSON превышает 5 (значение, указанное для элемента
<ObjectEntryCount>
), вы получаете следующую ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Разрешение
Если политика JSONThreatProtection предназначена для защиты от полезных данных, количество записей объектов которых превышает определенный порог, то ожидается сообщение об ошибке. В этом случае никаких дополнительных действий предпринимать не нужно.
Однако если вы решите, что в полезные данные можно включить больше записей объектов без каких-либо последствий, измените <ObjectEntryCount>
на подходящее значение в соответствии с вашими требованиями.
Например, если вы считаете, что можете разрешить до 10 записей объектов, измените политику JSONThreatProtection следующим образом:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t;
< DisplayNameJSON> <Threat Protection->1/Dis<playName
P>ro<perties/
Ar>rayEl<ementCount3/Arra>yE<lementCount
C>ontai<nerDepth12/ContainerD>e<pth
ObjectEntryCou>nt10/<Object>EntryCo<unt
> Obje<ctEntryNameLength>6/<ObjectEntryNameLen>g<th
Sourcerequest/>S
ource
StringValueLength50/StringValueLength
/JSONThreatProtection
Превышено количество элементов массива
Тело ответа об ошибке
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Пример тела ответа об ошибке
{
"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.j
sonthreatprotection.ExecutionFailed"
}
}
}
Причина
Эта ошибка возникает, если полезные данные входного сообщения, указанные элементом <Source>
, содержат массив JSON с количеством элементов, превышающим число, указанное в элементе <ArrayElementCount>
политики.
Например, если для элемента <ArrayElementCount>
указано значение 3
, но входные полезные данные содержат массив JSON с более чем 3 элементами, возникает эта ошибка.
Диагностика
Изучите сообщение об ошибке, чтобы определить имя политики и номер строки, в которой превышена длина массива. Например, в следующем сообщении об ошибке имя политики —
JSON-Threat-Protection-1
, а номер строки в полезных данных —3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Запишите значение, указанное для элемента
<ArrayElementCount>
политики (определенного на шаге 1).В следующем примере политики JSONThreatProtection
<ArrayElementCount>
установлено значение3
:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t; < DisplayNameJSON> <Threat Protection->1/Dis<playName P>ro<perties/ Ar>rayEl<ementCount3/Arra>y<ElementCount >Conta<inerDepth12/Container>D<epth ObjectEntryCo>unt5/<Object>EntryCo<unt > Obje<ctEntryNameLength>6/<ObjectEntryNameLen>g<th Sourcerequest/>S
ource StringValueLength50/StringValueLength /JSONThreatProtectionПроверьте конкретный номер строки (определенный на шаге 1) входных полезных данных и проверьте, имеет ли указанный там массив большее количество, чем число, указанное в элементе
<ArrayElementCount>
(определенном на шаге 2). Если количество элементов массива превышает счетчик, то это и есть причина ошибки.Вот пример входной полезной нагрузки:
{ "name":"Ford", "models":[ "Mustang", "Endeavour"
;, "Fiesta", "EcoSport", "Focus" ] }Показанная выше полезная нагрузка JSON содержит 5 элементов в массиве с именем
models
в строке 3. Поскольку количество элементов массива больше 3 (значение, указанное для элемента<ArrayElementCount>
), вы получаете следующую ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Разрешение
Если политика JSONThreatProtection предназначена для защиты от полезных данных с определенным пороговым значением количества массивов, то ожидается сообщение об ошибке. В этом случае дополнительных действий не требуется.
Однако если вы решите, что в массиве может быть разрешено большее количество элементов, измените <ArrayElementCount>
на подходящее значение в соответствии с вашими требованиями.
Например, если вы считаете, что можете разрешить до 5 элементов массива, измените политику следующим образом:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t;
< DisplayNameJSON> <Threat Protection->1/Dis<playName
P>ro<perties/
Ar>rayEl<ementCount5/Arra>y<ElementCount
>Conta<inerDepth12/Container>D<epth
ObjectEntryCo>unt5/<Object>EntryCo<unt
> Obje<ctEntryNameLength>6/<ObjectEntryNameLen>g<th
Sourcerequest/>S
ource
StringValueLength50/StringValueLength
/JSONThreatProtection
Превышена глубина контейнера
Тело ответа об ошибке
Трафик среды выполнения возвращает код ответа 500 со следующей ошибкой:
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Пример тела ответа об ошибке
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded container depth at line 5",
"detail": {
"errorcode": "steps.j
sonthreatprotection.ExecutionFailed"
}
}
}
Причина
Эта ошибка возникает, если полезная нагрузка входного сообщения, указанная элементом <Source>
, содержит объект JSON, содержащий элементы JSON с глубиной контейнера, превышающей максимальную глубину контейнера, указанную в элементе <ContainerDepth>
политики. Глубина контейнера — это максимально допустимая глубина вложенности для элементов JSON. Например, массив, содержащий объект, содержащий объект, будет иметь глубину включения 3.
Например, если элемент <ContainerDepth>
имеет значение 3
, но входные полезные данные имеют глубину контейнера, превышающую этот предел, возникает эта ошибка.
Диагностика
Изучите сообщение об ошибке, чтобы определить имя политики JSONThreatProtection и номер строки, в которой превышена глубина контейнера. Например, в следующем сообщении об ошибке имя политики —
JSON-Threat-Protection-1
, а номер строки в полезных данных —5
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Запишите значение, указанное для элемента
<ContainerDepth>
(определенного на шаге 1).В следующем примере политики JSONThreatProtection
<ContainerDepth>
установлено значение5
:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t; < DisplayNameJSON> <Threat Protection->1/Dis<playName P>r<operties/ A>rrayE<lementCount3/Arr>a<yElementCount > Cont<ainerDepth5/Container>De<pth ObjectEntryCou>nt5/O<bjectE>ntryCou<nt >Objec<tEntryNameLength2>0/<ObjectEntryNameLen>g<th Sourcerequest/>S
ource StringValueLength50/StringValueLength /JSONThreatProtectionПроверьте конкретный номер строки (определенный на шаге 1) входных полезных данных и проверьте, превышает ли глубина контейнера в полезных данных значение, указанное в элементе
<ContainerDepth>
(определенном на шаге 2). Если глубина контейнера превышает счетчик, это и есть причина ошибки.Вот пример входной полезной нагрузки:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2&quo
t; ] } ] } ] }Полезная нагрузка JSON, показанная выше, имеет глубину контейнера 6 в строке 5. Поскольку глубина больше 5, значение, указанное для элемента
<ContainerDepth>
политики JSONThreatProtection, вы получаете следующую ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Разрешение
Если политика JSONThreatProtection предназначена для защиты от полезных данных, глубина контейнера которых превышает указанное значение, ожидается сообщение об ошибке. В этом случае дополнительных действий не требуется.
Однако если вы решите, что более высокая глубина контейнера приемлема, измените <ContainerDepth>
на подходящее значение в соответствии с вашими требованиями.
Например, если вы считаете, что можете разрешить глубину контейнера до 10, измените политику следующим образом:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t;
< DisplayNameJSON> <Threat Protection->1/Dis<playName
P>ro<perties/
Ar>rayEl<ementCount3/Arra>y<ElementCount
>Conta<inerDepth10/Container>De<pth
ObjectEntryCou>nt5/O<bjectE>ntryCou<nt
>Objec<tEntryNameLength2>0/<ObjectEntryNameLen>g<th
Sourcerequest/>S
ource
StringValueLength50/StringValueLength
/JSONThreatProtection
Превышена длина строкового значения
Тело ответа об ошибке
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Пример тела ответа об ошибке
{
"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.j
sonthreatprotection.ExecutionFailed"
}
}
}
Причина
Эта ошибка возникает, если полезные данные входного сообщения, указанные элементом <Source>
, содержат элементы JSON, значения которых содержат больше символов, чем разрешено элементом <StringValueLength>
.
Например, если в политике для элемента <StringValueLength>
установлено значение 50
, но входные полезные данные содержат один или несколько элементов, значения которых содержат более 50 символов, возникает эта ошибка.
Диагностика
Изучите сообщение об ошибке, чтобы определить имя политики и номер строки, в которой длина строки превышена. В следующем примере имя политики —
JSON-Threat-Protection-1 and
строка в полезных данных3
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Запишите значение, указанное для элемента
<StringValueLength>
в (определенном на шаге 1).В следующем примере политики JSONThreatProtection для
<StringValueLength>
установлено значение50
:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t; < DisplayNameJSON> <Threat Protection->1/Dis<playName P>r<operties/ A>rrayE<lementCount3/Arr>a<yElementCount > Cont<ainerDepth5/Container>De<pth ObjectEntryCou>nt5/O<bjectE>ntryCou<nt >Objec<tEntryNameLength2>0/<ObjectEntryNameLen>g<th Sourcerequest/>S
ource StringValueLength50/StringValueLength /JSONThreatProtectionПроверьте конкретный номер строки (определенный на шаге 1) входных полезных данных и проверьте, превышает ли длина значения количество символов, указанное для элемента
<StringValueLength>
(определенное на шаге 2). Если длина значения превышает предел, это является причиной ошибки.Вот пример входной полезной нагрузки:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaun
gahoronukupokaiwhenuakitanatahu" }Показанная выше полезная нагрузка JSON содержит объект с именем
Place Name
, значение которогоTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
содержит 85 символов в строке 3. Поскольку длина значения превышает 50 (значение, указанное в элементе<StringValueLength>
, вы получаете следующую ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Разрешение
Если политика JSONThreatProtection предназначена для защиты от полезных данных, значения которых превышают определенную длину строки, то ожидается сообщение об ошибке. В этом случае дополнительных действий не требуется.
Однако если вы определите, что в полезных данных можно указать большую длину значения, измените <StringValueLength>
на подходящее значение в соответствии с вашими требованиями.
Например, если вы считаете, что можете разрешить значение длиной до 90, измените политику следующим образом:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t;
< DisplayNameJSON> <Threat Protection->1/Dis<playName
P>r<operties/
A>rrayE<lementCount3/Arr>a<yElementCount
> Cont<ainerDepth5/Container>De<pth
ObjectEntryCou>nt5/O<bjectE>ntryCou<nt
>Objec<tEntryNameLength2>0/<ObjectEntryNameLen>g<th
Sourcerequest/>S
ource
StringValueLength90/StringValueLength
/JSONThreatProtection
Недопустимый объект JSON
Тело ответа об ошибке
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Пример тела ответа об ошибке
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.j
sonthreatprotection.ExecutionFailed"
}
}
}
Причина
Эта ошибка возникает, если полезные данные входного сообщения, указанные элементом <Source>
в политике JSONThreatProtection, не являются допустимым объектом JSON.
Диагностика
Изучите сообщение об ошибке, чтобы определить имя политики и номер строки, в которой произошла ошибка. В следующем примере имя политики —
JSON-Threat-Protection-1 and
строка в полезных данных2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Проверьте конкретный номер строки (указанный на шаге 1) входных полезных данных и проверьте, действительно ли объект JSON, переданный в полезных данных, является допустимым объектом JSON.
Вот пример входной полезной нагрузки:
{ "Longitude": 6.11499, "Latitud
e" 50.76891 }В полезных данных JSON, показанных выше, в строке 3 нет
":"
(двоеточие). Поскольку это недопустимый объект JSON, вы получаете сообщение об ошибке:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Разрешение
Убедитесь, что действительные входные полезные данные JSON передаются любому прокси-серверу API, который включает политику JSONThreatProtection.
Для примера, описанного выше, измените полезную нагрузку JSON следующим образом:
{
"Longitude": 6.11499,
"Latitude
" : 50.76891
}
ИсточникНедоступен
Код ошибки
steps.jsonthreatprotection.SourceUnavailable
Тело ответа об ошибке
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Пример тела ответа об ошибке
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jso
nthreatprotection.SourceUnavailable"
}
}
}
Причина
Эта ошибка возникает, если переменная сообщения , указанная в элементе <Source>
политики JSONThreatProtection, имеет одно из следующих значений:
- Вне области действия (недоступно в конкретном потоке, в котором выполняется политика)
- Не является одним из допустимых значений
request
,response
илиmessage
Например, эта ошибка возникает, если для элемента <Source>
в политике задана переменная, которая не существует в потоке, в котором выполняется политика.
Диагностика
Определите имя политики и имя исходной переменной из сообщения об ошибке. Например, в следующем сообщении об ошибке имя политики —
JSON-Threat-Protection-1
, а переменная Source —requests
:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Проверьте значение, указанное для элемента
<Source>
, указанного на шаге 1.В следующем примере политики JSONThreatProtection для элемента
<Source>
установлено значениеrequests
.<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t; < DisplayNameJSON> <Threat Protection->1/Dis<playName P>r<operties/ A>rrayE<lementCount3/Arr>a<yElementCount > Cont<ainerDepth5/Container>De<pth ObjectEntryCou>nt5/O<bjectE>ntryCoun<t O>bject<EntryNameLength20>/O<bjectEntryNameLeng>t<h Sourcerequests/>S
ource StringValueLength50/StringValueLength /JSONThreatProtectionДопустимыми значениями элемента
<Source>
являютсяrequest
,response
илиmessage
. Поскольку запросы не являются допустимым значением и не существуют в потоке выполнения политики, вы получаете сообщение об ошибке:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Разрешение
Убедитесь, что для переменной, заданной в элементе <Source>
неудачной политики JSONThreatProtection, установлено значение request
, response
или message
и что она существует в потоке выполнения политики.
Чтобы исправить пример политики JSONThreatProtection, показанный выше, вы можете изменить элемент <Source>
, чтобы он использовал переменную request
, поскольку она существует в потоке запросов:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t;
< DisplayNameJSON> <Threat Protection->1/Dis<playName
P>r<operties/
A>rrayE<lementCount3/Arr>a<yElementCount
> Cont<ainerDepth5/Container>De<pth
ObjectEntryCou>nt5/O<bjectE>ntryCou<nt
>Objec<tEntryNameLength2>0/<ObjectEntryNameLen>g<th
Sourcerequest/>S
ource
StringValueLength50/StringValueLength
/JSONThreatProtection
NonMessageVariable
Код ошибки
steps.jsonthreatprotection.NonMessageVariable
Тело ответа об ошибке
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Пример тела ответа об ошибке
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.json
threatprotection.NonMessageVariable"
}
}
}
Причина
Эта ошибка возникает, если для элемента <Source>
в политике JSONThreatProtection установлена переменная, которая не имеет типа message .
Переменные типа сообщения представляют собой все HTTP-запросы и ответы. Встроенные переменные потока Apigee Edge, запрос, ответ и сообщение имеют тип сообщения. Дополнительные сведения о переменных сообщения см. в справочнике по переменным .
Диагностика
Определите имя политики JSONThreatProtection и имя переменной Source из сообщения об ошибке. Например, в следующем сообщении об ошибке имя политики —
JSON-Threat-Protection-1
, а переменная Source —message.content
:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Изучите элемент
<Source>
политики JSONThreatProtection (определенный на шаге 1).В следующем примере политики JSONThreatProtection
<Source>
установлено значениеmessage.content
вместоmessage
:<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"? JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t; < DisplayNameJSON> <Threat Protection->1/Dis<playName P>r<operties/ A>rrayE<lementCount3/Arr>a<yElementCount > Cont<ainerDepth5/Container>De<pth ObjectEntryCou>nt5/O<bjectE>ntryCount O<bjectEn>tryNa<meLength20/Object>En<tryNameLength >S<ourcemessage.content/>S
ource StringValueLength50/StringValueLength /JSONThreatProtectionПоскольку
message.content
не относится к типу сообщения, вы получите сообщение об ошибке:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Разрешение
Убедитесь, что для элемента <Source>
в неудачной политике JSONThreatProtection задана переменная потока типа сообщения , которая существует в потоке, в котором выполняется политика.
Чтобы исправить политику, вы можете изменить элемент <Source>
, указав переменную типа message. Например, в неудачном JSONThreatProtection вы можете указать элемент <Source>
как message
:
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
JSONThreatProtection async="false" continueOnError="false&qu>ot; e<nabled=&quo>t;true" name="<JSON-Threat->Prote<ction-1&quo>t;
< DisplayNameJSON> <Threat Protection->1/Dis<playName
P>r<operties/
A>rrayE<lementCount3/Arr>a<yElementCount
> Cont<ainerDepth5/Container>De<pth
ObjectEntryCou>nt5/O<bjectE>ntryCou<nt
>Objec<tEntryNameLength2>0/<ObjectEntryNameLen>g<th
Sourcemessage/>S
ource
StringValueLength50/StringValueLength
/JSONThreatProtection