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

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

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ı nedenleri

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

Hata türü Neden
Nesne giriş adı için uzunluk aşıldı Bir nesnenin giriş adında izin verilen maksimum dize uzunluğu aşıldı.
Nesne 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ı.
Kapsayıcı derinliği aşıldı İzin verilen maksimum iç içe yerleştirilmiş derinlik 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 Girilen 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 özellik adına sahip bir JSON nesnesi içeriyorsa ortaya çıkar.

Örneğin, politikada <ObjectEntryNameLength> öğesi 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 politika 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ünün spesifik satır numarasını (1. Adım'da tanımlanır) inceleyin ve nesne adının uzunluğunun <ObjectEntryNameLength> öğesinde belirtilen değerden (2. Adım'da tanımlanır) büyük olup olmadığını kontrol edin. Nesne adının uzunluğu bu sayıyı aşarsa hatanın nedeni budur.

    Giriş yükü örneği:

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

    Yukarıda gösterilen JSON yükü 2. satırda 6 karakter (ad uzunluğu 6'dır) olan number adlı bir özelliğe sahiptir. Nesne adının uzunluğu 5'ten (<ObjectEntryNameLength> öğ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 name
    length at line 2
    

Çözünürlük

JSONThreatProtection politikası, nesne girişi adları, tanımlanan değeri aşan nesnelere karşı koruma sağlamak amaçlıysa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.

Bununla birlikte, yükte herhangi bir sonuç olmadan daha uzun nesne girişi adlarının belirtilebileceğini belirlerseniz <ObjectEntryNameLength> öğesini, gereksinimlerinize göre uygun bir değerle değiştirin.

Örneğin, 10 karaktere kadar nesne adlarına izin verebileceğinizi düşünüyorsanız JSONThreatProtection politikasını aşağıdaki şekilde 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>

Nesne 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 ve giriş JSON yükünde 5'ten fazla giriş varsa bu hata verilir.

Teşhis

  1. JSONThreatProtection politika adını ve giriş sayısının 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ı 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 (1. adımda tanımlanan) belirtilen değeri 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 spesifik 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ımda tanımlanır) büyük olup olmadığını kontrol edin. Nesne sayısı nesne girişi sayısını aşıyorsa hatanın nedeni budur.

    Giriş yükü örneği:

    {
    "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şir. 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ı, belirli bir eşiği aşan çok sayıda nesne girişi içeren yüklere karşı koruma sağlamak için tasarlanmışsa hata mesajı beklenir. Bu durumda, başka işlem yapmanıza gerek yoktur.

Ancak hiçbir sonuç olmadan yüke daha fazla nesne girişinin dahil edilebileceğini belirlerseniz <ObjectEntryCount> öğesini, gereksinimlerinize göre uygun bir değerle değiştirin.

Örneğin, en fazla 10 nesne girişine izin verebileceğinizi düşünüyorsanız JSONThreatProtection politikasını aşağıdaki şekilde 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 fazla öğe sayısına sahip 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 not edin (1. Adım'da tanımlanır).

    Aşağıdaki JSONThreatProtection politika ö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 spesifik satır numarasını (1. Adım'da tanımlanır) inceleyin ve belirtilen dizinin sayısının, <ArrayElementCount> öğesinde belirtilen sayıdan (2. Adım'da tanımlanır) daha yüksek olup olmadığını kontrol edin. Dizi öğelerinin sayısı sayıyı aşıyorsa hatanın nedeni budur.

    Giriş yükü örneği:

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

    Yukarıda gösterilen JSON Yükü, 3. satırda models adlı dizide 5 öğeye sahiptir. Dizi öğelerinin sayısı 3'ten (<ArrayElementCount> öğ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 array element count
    at line 3
    

Çözünürlük

JSONThreatProtection politikasının amacı, belirli bir dizi sayısı eşiğiyle belirli bir yüke karşı koruma sağlamaksa hata mesajıdır. Bu durumda herhangi bir işlem yapmanıza gerek yoktur.

Bununla birlikte, bir dizide daha fazla sayıda öğeye izin verilebileceğini belirlerseniz <ArrayElementCount> öğesini gereksinimlerinize göre uygun bir değerle 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 hatayla birlikte bir 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ü politikanın <ContainerDepth> öğesinde belirtilen maksimum kapsayıcı derinliğini aşan kapsayıcı derinliğine sahip 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, 3'lük koruma derinliğiyle sonuçlanır.

Örneğin, <ContainerDepth> öğesi 3 ise ancak giriş yükünün kapsayıcı derinliği bu sınırı aşıyorsa bu hata verilir.

Teşhis

  1. JSONThreatProtection politika 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, yükteki satır numarası ise 5'dir.

    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ım'da tanımlanır) not edin.

    Aşağıdaki JSONThreatProtection politika ö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 spesifik 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ımlanan) yüksek olup olmadığını kontrol edin. Container derinliği sayı sınırını aşıyorsa hatanın nedeni budur.

    Giriş yükü örneği:

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

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

    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ı, kapsayıcı derinliği belirtilen değeri aşan yüke karşı koruma sağlamayı amaçlıyorsa hata mesajı beklenir. Bu durumda herhangi bir işlem yapmanıza gerek yoktur.

Ancak daha yüksek kapsayıcı derinliklerinin kabul edilebilir olduğuna karar verirseniz <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 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>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> öğesi tarafından izin verilenden fazla karakter içeren değerlere sahip JSON öğeleri içeriyorsa ortaya çıkar.

Örneğin, politikada <StringValueLength> öğesi 50 değerine ayarlıysa ancak giriş yükünde, değerleri 50'den fazla karakter içeren bir veya daha fazla öğe varsa 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ı, 3 yükteki JSON-Threat-Protection-1 and satırıdır.

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

    Aşağıdaki JSONThreatProtection politika ö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ünün spesifik satır numarasını (1. Adım'da tanımlanır) inceleyin ve değerin uzunluğunun <StringValueLength> öğesi için belirtilen karakter sayısından (2. Adım'da tanımlanır) büyük olup olmadığını kontrol edin. Değerin uzunluğu sınırı aşıyorsa hatanın nedeni budur.

    Giriş yükü örneği:

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

    Yukarıda gösterilen JSON Yükünde, 3. satırda Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu değeri 85 karakter olan Place Name adlı bir nesne vardır. Değerin uzunluğu, <StringValueLength> öğesinde belirtilen değer 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ı, belirli bir dize uzunluğunu aşan değerlere sahip yüke karşı koruma sağlamayı amaçladıysa hata mesajı gösterilir. Bu durumda herhangi bir işlem yapmanıza gerek yoktur.

Ancak yükte daha uzun bir değer uzunluğunun belirtilebileceğine karar verirseniz <StringValueLength> öğesini, gereksinimlerinize göre uygun bir değerle değiştirin.

Örneğin, 90 uzunluğuna kadar bir değere 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>3</ArrayElementCount>
    <ContainerDepth>5</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>20</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>90</StringValueLength>
</JSONThreatProtection>

Geçerli JSON nesnesi değil

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ı, 2 yükteki JSON-Threat-Protection-1 and satırıdır.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. Giriş yükünün spesifik 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.

    Giriş yükü örneği:

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

    Yukarıda gösterilen JSON yükünde, 3. satırda ":" (iki nokta) simgesi yoktur. Geçerli bir JSON nesnesi olmadığı için ş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 tüm API Proxy'lerine geçerli bir giriş JSON yükü aktarıldığından emin olun.

Yukarıda açıklanan örnek için JSON yükünü aşağıdaki şekilde 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 şunlardan biriyse ortaya çıkar:

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

Örneğin bu hata, politikadaki <Source> öğesi, politikanın uygulandığı akışta var olmayan bir değişkene ayarlanırsa ortaya çıkar.

Teşhis

  1. Politika adını ve hata mesajındaki Kaynak değişkenin adını tanımlayın. Örneğin, aşağıdaki hata mesajında politika adı JSON-Threat-Protection-1, Kaynak değişkeni ise requests'dir:

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

    Aşağıdaki JSONThreatProtection politika ö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. İstekler 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 uygulandığı 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ünde 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ürleri mesaj türündedir. Mesaj değişkenleri hakkında daha fazla bilgi edinmek için Değişkenler referansı bölümünü inceleyin.

Teşhis

  1. Hata mesajındaki JSONThreatProtection politika adını ve Kaynak 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 şeklindedir:

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

    Aşağıdaki JSONThreatProtection politika ö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, mesaj türünde olmadığı için şu 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 uygulandığı 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ünde bir değişken belirtecek şekilde değiştirebilirsiniz. Örneğin, başarısız JSONThreatProtection öğesinde <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>