JSON Tehdit Koruması çalışma zamanı hatasını giderme

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
info

ExecutionFailed

Hata Kodu

steps.jsonthreatprotection.ExecutionFailed

Hata yanıtı gövdesi

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

Hata türleri ve olası nedenler

JSONThreatProtection politikası birçok farklı türde ExecutionFailed hatası oluşturabilir. Aşağıdaki tabloda farklı hata türleri ve olası nedenleri listelenmiştir:

Hata türü Neden
Nesne girişi adı uzunluğu aşıldı Bir nesnenin giriş adında izin verilen maksimum dize uzunluğu aşıldı.
Öğe girişi sayısı aşıldı Bir nesnede izin verilen maksimum giriş sayısı aşıldı.
Dizi öğesi sayısı aşıldı Bir dizide izin verilen maksimum öğe sayısı aşıldı.
Container derinliği aşıldı İzin verilen maksimum iç içe yerleştirme derinliği aşıldı.
Dize değeri uzunluğu aşıldı Bir dize değeri için izin verilen maksimum uzunluk aşıldı.
Geçersiz JSON nesnesi Giriş JSON Yükü geçersiz.

Nesne girişi adı uzunluğu aşıldı

Hata yanıtı gövdesi

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

Örnek hata yanıtı gövdesi

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

Neden

Bu hata, <Source> öğesi tarafından belirtilen giriş mesajı yükü, <ObjectEntryNameLength> öğesinde belirtilen maksimum uzunluğu aşan bir özellik adına sahip bir JSON nesnesi içeriyorsa ortaya çıkar.

Örneğin, <ObjectEntryNameLength> öğesi politikada 5 olarak belirtilmişse ancak giriş mesajı yükü, adı 5 karakteri aşan bir JSON özelliğine sahipse bu hata verilir.

Teşhis

  1. JSONThreatProtection politika adını ve uzun giriş adının bulunduğu satır numarasını belirlemek için hata mesajını inceleyin. Örneğin, aşağıdaki hata mesajında JSONThreatProtection politikasının adı JSON-Threat-Protection-1 ve yükteki satır numarası 2'dir.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    
  2. 1. adımda tanımladığınız politikayı inceleyin ve <ObjectEntryNameLength> öğesinde belirtilen değeri not edin.

    Örneğin, aşağıdaki JSONThreatProtection politikasında <ObjectEntryNameLength>, 5 olarak ayarlanmıştır:

    <?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. Giriş yükündeki belirli satır numarasını (1. adımda tanımlanır) inceleyin ve nesne adının uzunluğunun <ObjectEntryNameLength> öğesinde belirtilen değerden (2. adımda tanımlanır) daha uzun olup olmadığını kontrol edin. Nesne adının uzunluğu bu sayıyı aşarsa hata nedeni budur.

    Aşağıda örnek bir giriş yükü verilmiştir:

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

    Yukarıda gösterilen JSON yükünde, 2. satırda number adlı 6 karakterlik (ad uzunluğu 6) bir özellik vardır. Nesne adının uzunluğu 5'ten (<ObjectEntryNameLength> öğesi için belirtilen değer) büyük olduğundan şu hatayı alırsınız:

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

Çözünürlük

JSONThreatProtection politikasının amacı, tanımlanan değeri aşan nesne girişi adlarına sahip yüklere karşı koruma sağlamaksa hata mesajı gösterilmesi beklenir. Bu durumda başka bir işlem yapmanız gerekmez.

Ancak, yükte herhangi bir soruna yol açmadan daha uzun nesne girişi adlarının belirtilebileceğini belirlerseniz <ObjectEntryNameLength> değerini ihtiyaçlarınıza göre uygun bir değere değiştirin.

Örneğin, 10 karaktere kadar nesne adlarına izin verebilirsiniz. JSONThreatProtection politikasını aşağıdaki gibi değiştirin:

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

Öğe girişi sayısı aşıldı

Hata yanıtı gövdesi

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

Örnek hata yanıtı gövdesi

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

Neden

Bu hata, <Source> öğesi tarafından belirtilen giriş mesajı yükü, politikanın <ObjectEntryCount> öğesinde belirtilen değerden daha fazla giriş (özellik) içeren bir JSON nesnesi içeriyorsa ortaya çıkar.

Örneğin, <ObjectEntryCount>öğesi 5 ise ancak giriş JSON yükünde 5'ten fazla giriş varsa bu hata meydana gelir.

Teşhis

  1. JSONThreatProtection politika adını ve giriş sayısının aşıldığı satır numarasını tanımlamak için hata mesajını inceleyin. Örneğin, aşağıdaki hata mesajında politika adı JSON-Threat-Protection-1 ve yükteki satır numarası 7'dır:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count
    at line 7
    
  2. Politikanın <ObjectEntryCount> öğesinde belirtilen değeri (1. adımda tanımlanır) not edin.

    Aşağıdaki politika örneğinde <ObjectEntryCount>, 5 olarak ayarlanmıştır:

    <?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. Giriş yükünün belirli satır numarasını (1. Adım'da tanımlanır) inceleyin ve yükteki varlık sayısının <ObjectEntryCount> öğesi için belirtilen değerden (2. Adım'da tanımlanır) büyük olup olmadığını kontrol edin. Nesne sayısı, nesne girişi sayısını aşıyorsa hata bununla ilgilidir.

    Aşağıda örnek bir giriş yükü verilmiştir:

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

    Yukarıda gösterilen JSON yükünde 6. giriş, 7. satırda (şirket) gerçekleşmektedir. Giriş JSON yükündeki nesne girişlerinin sayısı 5'ten (<ObjectEntryCount> öğesi için belirtilen değer) büyük olduğundan aşağıdaki hatayı alırsınız:

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

Çözünürlük

JSONThreatProtection politikasının amacı, belirli bir eşiği aşan sayıda nesne girişi içeren yüklere karşı koruma sağlamaksa hata mesajı gösterilmesi beklenir. Bu durumda başka bir işlem yapmanız gerekmez.

Ancak, yükü herhangi bir soruna yol açmayacak şekilde daha fazla nesne girişi içerebileceğini belirlerseniz <ObjectEntryCount> değerini ihtiyaçlarınıza göre uygun bir değere değiştirin.

Örneğin, 10'a kadar nesne girişine izin verebileceğinizi düşünüyorsanız JSONThreatProtection politikasını aşağıdaki gibi değiştirin:

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

Dizi öğesi sayısı aşıldı

Hata yanıtı gövdesi

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

Örnek hata yanıtı gövdesi

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

Neden

Bu hata, <Source> öğesi tarafından belirtilen giriş mesajı yükü, politikanın <ArrayElementCount> öğesinde belirtilen sayıdan daha fazla öğe içeren bir JSON dizisi içeriyorsa ortaya çıkar.

Örneğin, <ArrayElementCount> öğesi 3 olarak belirtilmişse ancak giriş yükü 3'ten fazla öğe içeren bir JSON dizisine sahipse bu hata verilir.

Teşhis

  1. Politika adını ve dizi uzunluğunun aşıldığı satır numarasını belirlemek için hata mesajını inceleyin. Örneğin, aşağıdaki hata mesajında politika adı JSON-Threat-Protection-1 ve yükteki satır numarası 3'dır:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
    
  2. Politikanın <ArrayElementCount> öğesi için belirtilen değeri (1. adımda tanımlanmıştır) not edin.

    Aşağıdaki JSONThreatProtection politikası örneğinde <ArrayElementCount>, 3 olarak ayarlanmıştır:

    <?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. Giriş yükünün belirli satır numarasını (1. Adım'da tanımlanır) inceleyin ve burada belirtilen dizide, <ArrayElementCount> öğesinde belirtilen sayıdan (2. Adım'da tanımlanır) daha yüksek bir sayım olup olmadığını kontrol edin. Dizi öğelerinin sayısı sayıyı aşıyorsa hata bununla ilgilidir.

    Aşağıda örnek bir giriş yükü verilmiştir:

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

    Yukarıda gösterilen JSON yükünde, 3. satırda models adlı dizinde 5 öğe vardır. Dizi öğelerinin sayısı 3'ten (<ArrayElementCount> öğesi için belirtilen değer) büyük olduğu için aşağıdaki hatayı alırsınız:

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

Çözünürlük

JSONThreatProtection politikasının amacı, belirli bir dizi sayısı eşiğine sahip yüklere karşı koruma sağlamaksa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.

Ancak bir dizi içinde daha fazla öğeye izin verilebileceğini belirlerseniz <ArrayElementCount> değerini ihtiyaçlarınıza göre uygun bir değere değiştirin.

Örneğin, en fazla 5 dizi öğesine izin verebileceğinizi düşünüyorsanız politikayı aşağıdaki gibi değiştirin:

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

Kapsayıcı derinliği aşıldı

Hata yanıtı gövdesi

Çalışma zamanı trafiği, aşağıdaki hatayı içeren 500 yanıt kodu döndürür:

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

Örnek hata yanıtı gövdesi

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

Neden

Bu hata, <Source> öğesi tarafından belirtilen giriş mesajı yükü, kapsayıcı derinliği politikanın <ContainerDepth> öğesinde belirtilen maksimum kapsayıcı derinliğini aşan JSON öğeleri içeren bir JSON nesnesi içeriyorsa ortaya çıkar. Kapsayıcı derinliği, JSON öğeleri için izin verilen maksimum iç içe yerleştirilmiş derinliktir. Örneğin, nesne içeren bir nesne içeren bir dizi, kapsama derinliğini 3 olarak belirler.

Örneğin, <ContainerDepth> öğesi 3 ise ancak giriş yükü bu sınırı aşan bir kapsayıcı derinliğine sahipse bu hata atılır.

Teşhis

  1. JSONThreatProtection politikası adını ve kapsayıcı derinliğinin aşıldığı satır numarasını belirlemek için hata mesajını inceleyin. Örneğin, aşağıdaki hata mesajında politika adı JSON-Threat-Protection-1 ve yükteki satır numarası 5 şeklindedir.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    
  2. <ContainerDepth> öğesi için belirtilen değeri (1. adımda tanımlanmıştır) not edin.

    Aşağıdaki JSONThreatProtection politikası örneğinde <ContainerDepth>, 5 olarak ayarlanmıştır:

    <?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. Giriş yükünün belirli satır numarasını (1. adımda tanımlanır) inceleyin ve yükteki kapsayıcı derinliğinin, <ContainerDepth> öğesinde belirtilen değerden (2. adımda tanımlanır) daha yüksek olup olmadığını kontrol edin. Kapsayıcı derinliği sayıyı aşıyorsa hatanın nedeni budur.

    Aşağıda örnek bir giriş yükü verilmiştir:

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

    Yukarıda gösterilen JSON yükü, 5. satırda 6 kapsayıcı derinliğine sahiptir. Derinlik 5'ten büyük olduğundan JSONThreatProtection politikasının <ContainerDepth> öğesi için belirtilen değerde aşağıdaki hata gösterilir:

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

Çözünürlük

JSONThreatProtection politikasının amacı, belirtilen değeri aşan kapsayıcı derinliklerine sahip yüklere karşı koruma sağlamaksa hata mesajı gösterilmesi beklenir. Bu durumda başka bir işlem yapmanız gerekmez.

Bununla birlikte, daha yüksek container derinliğinin kabul edilebilir olduğunu belirlerseniz <ContainerDepth> değerini ihtiyaçlarınıza göre uygun bir değerle değiştirin.

Örneğin, 10'a kadar kapsayıcı derinliğine izin verebilirsiniz. Politikayı aşağıdaki gibi değiştirin:

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

Dize değeri uzunluğu aşıldı

Hata yanıtı gövdesi

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

Örnek hata yanıtı gövdesi

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

Neden

Bu hata, <Source> öğesi tarafından belirtilen giriş mesajı yükü, <StringValueLength> öğesinin izin verdiğinden daha fazla karakter içeren değerlere sahip JSON öğeleri içeriyorsa ortaya çıkar.

Örneğin, <StringValueLength> öğesi politikada 50 değerine ayarlandıysa ancak giriş yükü, değerleri 50'den fazla karakter içeren bir veya daha fazla öğe içeriyorsa bu hata verilir.

Teşhis

  1. Politika adını ve dize uzunluğunun aşıldığı satır numarasını belirlemek için hata mesajını inceleyin. Aşağıdaki örnekte politika adı JSON-Threat-Protection-1 andyükteki satır 3 şeklindedir.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
    
  2. 1. adımda tanımlanan <StringValueLength> öğesi için belirtilen değeri not edin.

    Aşağıdaki JSONThreatProtection politikası örneğinde <StringValueLength>, 50 olarak ayarlanmıştır:

    <?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. Giriş yükündeki belirli satır numarasını (1. adımda tanımlanır) inceleyin ve değerin uzunluğunun <StringValueLength> öğesi için belirtilen karakter sayısından (2. adımda tanımlanır) daha uzun olup olmadığını kontrol edin. Hatanın nedeni, değerin uzunluğunun sınırı aşmasıdır.

    Aşağıda örnek bir giriş yükü verilmiştir:

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

    Yukarıda gösterilen JSON yükünde, 3. satırda Place Name adlı bir nesne ve Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu adlı değerinin 85 karakteri vardır. Değerin uzunluğu, <StringValueLength> öğesinde belirtilen 50'den büyük olduğu için aşağıdaki hatayı alırsınız:

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

Çözünürlük

JSONThreatProtection politikasının amacı, belirli bir dize uzunluğunu aşan değerlere sahip yüklere karşı koruma sağlamaksa hata mesajı görüntülenir. Bu durumda başka bir işlem yapmanız gerekmez.

Ancak yükte daha uzun bir değer uzunluğunun belirtilebileceğine karar verirseniz <StringValueLength> değerini ihtiyaçlarınıza göre uygun bir değerle değiştirin.

Örneğin, 90 karaktere kadar bir değere izin verebilirsiniz. Politikayı aşağıdaki gibi değiştirin:

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

Geçersiz JSON nesnesi

Hata yanıtı gövdesi

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

Örnek hata yanıtı gövdesi

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

Neden

Bu hata, JSONThreatProtection politikasındaki <Source> öğesi tarafından belirtilen giriş mesajı yükü geçerli bir JSON nesnesi değilse ortaya çıkar.

Teşhis

  1. Politika adını ve hatanın oluştuğu satır numarasını belirlemek için hata mesajını inceleyin. Aşağıdaki örnekte politika adı JSON-Threat-Protection-1 andyükteki satır 2 şeklindedir.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. Giriş yükünün belirli satır numarasını (1. Adım'da tanımlanır) inceleyin ve yükte geçirilen JSON nesnesinin gerçekten geçerli bir JSON nesnesi olup olmadığını kontrol edin.

    Aşağıda örnek bir giriş yükü verilmiştir:

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

    Yukarıda gösterilen JSON yükünde 3. satırda ":" (iki nokta üst üste) yok. Bu geçerli bir JSON nesnesi olmadığından, şu hatayı alırsınız:

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

Çözünürlük

JSONThreatProtection politikasını içeren API Proxy'lerine geçerli bir giriş JSON yükü iletildiğinden emin olun.

Yukarıda açıklanan örnek için JSON yükünü aşağıdaki gibi değiştirin:

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

SourceUnavailable

Hata Kodu

steps.jsonthreatprotection.SourceUnavailable

Hata yanıtı gövdesi

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

Örnek hata yanıtı gövdesi

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

Neden

Bu hata, JSONThreatProtection politikasının <Source> öğesinde belirtilen message değişkeni aşağıdakilerden biriyse oluşur:

  • Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
  • Geçerli değerlerden biri değil: request, response veya message

Örneğin, bu hata, politikadaki <Source> öğesi, politikanın yürütüldüğü akışta bulunmayan bir değişkene ayarlanırsa ortaya çıkar.

Teşhis

  1. Hata mesajından politika adını ve Source değişkeninin adını belirleyin. Örneğin, aşağıdaki hata mesajında politika adı JSON-Threat-Protection-1 ve Kaynak değişkeni requests'tır:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    
  2. 1. adımda tanımlanan <Source> öğesi için belirtilen değeri inceleyin.

    Aşağıdaki JSONThreatProtection politikası örneğinde <Source> öğesi requests olarak ayarlanmıştır.

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

    <Source> öğesi için geçerli değerler request, response veya message şeklindedir. requests geçerli bir değer olmadığı ve politikanın yürütüldüğü akışta bulunmadığı için şu hatayı alırsınız:

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

Çözünürlük

Başarısız JSONThreatProtection politikasının <Source> öğesinde ayarlanan değişkenin request, response veya message olarak ayarlandığından ve politikanın yürütüldüğü akışta bulunduğundan emin olun.

Yukarıda gösterilen örnek JSONThreatProtection politikasını düzeltmek için <Source> öğesini, istek akışında mevcut olduğundan request değişkenini kullanacak şekilde değiştirebilirsiniz:

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

Hata Kodu

steps.jsonthreatprotection.NonMessageVariable

Hata yanıtı gövdesi

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

Örnek hata yanıtı gövdesi

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

Neden

Bu hata, JSONThreatProtection politikasındaki <Source> öğesi message türüne ait olmayan bir değişkene ayarlanırsa ortaya çıkar.

Mesaj türü değişkenleri, HTTP isteklerinin ve yanıtlarının tamamını temsil eder. Yerleşik Apigee Edge akış değişkenleri istek, yanıt ve mesaj türüne sahiptir. Mesaj değişkenleri hakkında daha fazla bilgi edinmek için Değişkenler referansı bölümüne bakın.

Teşhis

  1. Hata mesajından JSONThreatProtection politikasının adını ve Source değişkeninin adını belirleyin. Örneğin, aşağıdaki hata mesajında politika adı JSON-Threat-Protection-1, Kaynak değişkeni ise message.content'dir:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
    
  2. JSONThreatProtection politikasının <Source> öğesini (1. adımda tanımlanmıştır) inceleyin.

    Aşağıdaki JSONThreatProtection politikası örneğinde, <Source> message yerine message.content olarak ayarlanmıştır:

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

    message.content, message türü olmadığından aşağıdaki hatayı alırsınız:

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

Çözünürlük

Başarısız JSONThreatProtection politikasındaki <Source> öğesinin, politikanın yürütüldüğü akışta bulunan bir mesaj türü akış değişkenine ayarlandığından emin olun.

Politikayı düzeltmek için <Source> öğesini, mesaj türüne sahip bir değişken belirtecek şekilde değiştirebilirsiniz. Örneğin, başarısız JSONThreatProtection'da <Source> öğesini message olarak belirtebilirsiniz:

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