415 Desteklenmeyen Medya Türü - Desteklenmeyen Kodlama

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Belirti

İstemci uygulaması 415 Unsupported Media Type HTTP durum kodunu alır ve hata kodu: protocol.http.UnsupportedEncoding .

Hata mesajı

İstemci uygulaması aşağıdaki yanıt kodunu alır:

HTTP/1.1 415 Unsupported Media Type

Ayrıca, aşağıda gösterilene benzer bir hata mesajı da görebilirsiniz:

{
   "fault":{
      "faultstring":"Unsupported Encoding \"UTF-8\"",
      "detail":{
         "errorcode":"protocol.http.UnsupportedEncoding"
      }
   }
}

Olası nedenler

Bu hata, Content-Encoding üstbilgisinin değeri İstemci tarafından Apigee'ye gönderilen HTTP isteği veya arka uç sunucusu tarafından Apigee şunu içermez: spesifikasyona göre Apigee tarafından desteklenen kodlama RFC 7231, bölüm 6.5.13: 415 Desteklenmeyen Medya Türü.

Bu hatanın olası nedenleri aşağıda açıklanmıştır:

Neden Açıklama Şunun için geçerli sorun giderme talimatları:
İstekte desteklenmeyen kodlama kullanılmış Content-Encoding istek başlığı, desteklenmeyen kodlama içeriyor. Apigee Edge'dir. Edge Herkese Açık ve Private Cloud kullanıcıları
Yanıtta desteklenmeyen kodlama kullanıldı Arka uç sunucusunun yanıt başlığı Content-Encoding, şu kodlamayı içeriyor: Apigee Edge tarafından desteklenmez. Edge Herkese Açık ve Private Cloud kullanıcıları

Sık kullanılan teşhis adımları

Hatayı teşhis etmek için aşağıdaki yöntemlerden birini kullanabilirsiniz:

API Monitoring

API Monitoring'i kullanarak hatayı teşhis etmek için:

  1. Apigee Edge hesabınızda oturum açın.
  2. Sorunu incelemek istediğiniz kuruluşa geçin:

    kullanıcı arayüzü kuruluş açılır menüsü
  3. Analiz > API İzleme > İnceleme sayfası.
  4. Hataları gözlemlediğiniz zaman aralığını seçin.
  5. Proxy filtresinin Tümü olarak ayarlandığından emin olun.
  6. Zaman ile Hata Kodu'nun grafiğini çizin.
  7. Aşağıda gösterildiği gibi protocol.http.UnsupportedEncoding hata koduna sahip bir hücre seçin:

    hata kodu hücresi seçildi
  8. protocol.http.UnsupportedEncoding hata koduyla ilgili bilgiler aşağıda gösterildiği gibidir:

  9. Günlükleri görüntüle 'yi tıklayın ve 415 ile başarısız olan isteklerden birini genişletin. hatası oluştu:

  10. Günlükler penceresinde aşağıdaki ayrıntılara dikkat edin:
    • Hata Kaynağı: Bu sütun, hatanın apigee tarafından döndürüldüğünü gösterir. veya target.
    • Hata Kodu: protocol.http.UnsupportedEncoding ile eşleşmelidir.
  11. Hata Kaynağı apigee ise bu durum, isteğin gönderildiği anlamına gelir. Content-Encoding üstbilgisinde desteklenmeyen kodlama yer alıyor.
  12. Hata Kaynağı target ise bu, arka uç sunucusunun yanıt, Content-Encoding başlığında desteklenmeyen kodlama içeriyor.

İzleme aracı

İzleme aracını kullanarak hatayı teşhis etmek için:

  1. oturumu izleme ve şunlardan birini yapın:
    • 415 Unsupported Media Type hatasının oluşmasını bekleyin veya
    • Sorunu yeniden oluşturabiliyorsanız API çağrısını yeniden oluşturun 415 Unsupported Media Type hata.
  2. Show all FlowInfos (Tüm Akış Bilgilerini Göster) seçeneğinin etkin olduğundan emin olun:

    seçenekler bölmesini görüntüle, tüm akış bilgilerini göster
  3. Başarısız isteklerden birini seçin ve izini inceleyin.
  4. İzlemenin farklı aşamaları arasında gezinin ve hatanın nerede oluştuğunu bulun.
  5. Hatayı genellikle İstek gönderilen hedeften sonraki bir akışta bulabilirsiniz. sunucu aşamasını görebilirsiniz:

  6. İzdeki hatanın değerini not edin.

    Yukarıdaki örnek iz, hatayı Unsupported Encoding "utf-8" olarak gösteriyor. Başlangıç hata, istek arka uç sunucusuna gönderildikten sonra Apigee tarafından ortaya çıkıyorsa arka uç sunucusunun Content-Encoding şeklindeki yanıt başlığını şu değerle gönderdiğini "utf-8", bu bir Apigee'de desteklenen kodlamayı inceleyebilirsiniz.

  7. İzlemedeki AX (Analytics Verilerinin Kaydedilen) Aşamasına gidin ve tıklayın.
  8. Aşama Ayrıntıları'nda Hata / Yanıt Üstbilgileri bölümüne ilerleyin bir proje yöneticisine X-Apigee-fault-code ve X-Apigee-fault-source değerleri aşağıda gösterildiği gibidir:

  9. X-Apigee-fault-code ve X-Apigee-fault-source değerlerini şu şekilde görürsünüz: protocol.http.UnsupportedEncoding ve target, hatası, "utf-8" için desteklenmeyen kodlama değerinin arka uç sunucusuna Content-Encoding ekleyin.

    Yanıt Başlıkları Değer
    X-Apigee-fault-code protocol.http.UnsupportedEncoding
    X-Apigee-fault-source target

  10. Şunu kullanıp kullanmadığınızı kontrol edin: proxy zinciri oluşturma; yani hedef sunucu/hedef uç noktası, proxy'si var.
    1. Bunu belirlemek için İstek hedef sunucuya gönderildi aşamasına geri dönün. Curl'ü Göster'i tıklayın.

    2. Hedef Sunucuya Gönderilen İsteğin Kısmı penceresi açılır. Buradan aşağıdaki işlemleri yapabilirsiniz: hedef sunucu ana makine takma adını belirler.
    3. Hedef sunucu ana makine takma adı, bir sanal ana makine takma adına işaret ediyorsa bu bir proxy zincirlemedir. Bu durumda, zincirli proxy için yukarıdaki adımların tümünü tekrarlamanız gerekene kadar 415 Unsupported Media Type hatasına gerçekte neyin neden olduğunu belirlersiniz.
    4. Hedef sunucu ana makine takma adı, arka uç sunucunuzu işaret ediyorsa bu durum, arka uç sunucunuz desteklenmeyen kodlamayı Apigee'ye geçiriyordur.

Nginix erişim günlükleri

NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:

  1. Private Cloud kullanıcısıysanız aşağıdakileri belirlemek için NGINX erişim günlüklerini kullanabilirsiniz: HTTP 415 hatalarıyla ilgili önemli bilgiler.
  2. NGINX erişim günlüklerini kontrol edin:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

  3. Belirli bir sürede 415 Hataları olup olmadığını kontrol edin (sorun oluştuysa) veya 415 ile hâlâ başarısız olan istekler varsa bunları kontrol edin.
  4. X-Apigee-fault-code eşleştirmesinde 415 hatası bulursanız protocol.http.UnsupportedEncoding değerini, sonra da X-Apigee-fault-source.

    NGINX erişim günlüğünden örnek 415 hatası:

    NGINX erişim günlüğünden yukarıdaki örnek giriş, X- Apigee-fault-code ve X-Apigee-fault-source:

    Yanıt Başlıkları Değer
    X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
    X-Apigee-fault-source MP

    X-Apigee-fault-source daX-Apigee-fault-source X-Apigee-fault-source değerine sahip olabilir.

Neden: İstekte desteklenmeyen kodlama

Teşhis

  1. API kullanılarak gözlemlenen hatanın Hata Kodu ve Hata Kaynağı'nı belirleme içinde açıklandığı şekilde izleme veya NGINX erişim günlükleri Yaygın teşhis adımları.
  2. Hata Kodu protocol.http.UnsupportedEncoding ve Hata Kaynak, apigee veya MP değerine sahipse bu, istemci uygulama tarafından gönderilen isteğin, istek başlığında desteklenmeyen kodlama olması Content-Encoding.
  3. HTTP isteğinin bir parçası olarak iletilen desteklenmeyen kodlamanın değerini belirleyebilirsiniz. aşağıdaki yöntemlerden birini kullanın:

    Hata mesajı

    Hata mesajını kullanarak:
    1. Apigee Edge'den alınan hata mesajının tamamına erişiminiz varsa Şuraya: faultstring. faultstring, desteklenmeyen son kodlamayla ilgilidir.

      Örnek Hata Mesajı:

      "faultstring":"Unsupported Encoding \"UTF-8\""
    2. Yukarıdaki hata mesajında, desteklenmeyen kodlamanın değerinin faultstring içinde görüldüğü gibi “UTF-8”.

      “UTF-8”, Apigee Edge'de desteklenen bir kodlama olmadığından bu istek şu hata koduyla birlikte 415 Unsupported Media Type hatasıyla başarısız oluyor: protocol.http.UnsupportedEncoding.

    Gerçek istek

    Gerçek isteği kullanarak:
    1. İstemci uygulaması tarafından yapılan asıl isteğe erişiminiz yoksa şuraya gidin: Çözüm.
    2. İstemci uygulamanın yaptığı asıl isteğe erişiminiz varsa şu adımları uygulayın:
      1. Content-Encoding. istek başlığına iletilen değeri belirleyin
      2. Content-Encoding istek başlığına iletilen değer bir değilse Desteklenen kodlama bölümünde listelenen değerler arasında bu hatanın nedeni hakkında bilgi edinin.

        Örnek istek:

        curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz

        Yukarıdaki örnek istek, "UTF-8" değerini Content- Encoding başlığına gönderir. Bu değer Apigee Edge'de desteklenen kodlama. Bu nedenle bu istek, şu hata koduyla birlikte 415 Unsupported Media Type hatası vererek başarısız oldu: protocol.http.UnsupportedEncoding.

Çözünürlük

  1. Apigee tarafından desteklenen kodlama listesine göz atın: Desteklenen kodlama.
  2. İstemci uygulamasının her zaman aşağıdakileri gönderdiğinden emin olun:
    • Yalnızca Content-Encoding üstbilgisi değeri olarak desteklenen kodlama istek
    • Apigee Edge'e desteklenen biçimdeki ve şu biçimle eşleşen istek yükü Content-Encoding başlıkta belirtildi
  3. Yukarıdaki örnekte, istek yükünün gz uzantısı vardır. içeriğin gzip olması gerekir. İstek başlığını göndererek sorunu çözebilirsiniz Content-Encoding: gzip olarak ve istek yükü gzip biçiminde:

    curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
    

Neden: Yanıtta desteklenmeyen kodlama

Teşhis

  1. API kullanılarak gözlemlenen hatanın Hata Kodu ve Hata Kaynağı'nı belirleme Aşağıdaki bölümde açıklandığı şekilde İzleme, Trace Aracı veya NGINX erişim günlükleri Yaygın teşhis adımları.
  2. Hata Kaynağı target değerine sahipse bu durum, arka uç sunucusu tarafından gönderilen yanıtın Content-Encoding başlığı.
  3. HTTP yanıtının bir parçası olarak iletilen desteklenmeyen kodlama değerini, aşağıdaki yöntemlerden birini kullanarak arka uç sunucusuna bildirin:

    Hata mesajı

    Hata mesajını kullanarak:
    1. Apigee Edge'den alınan hata mesajının tamamına erişiminiz varsa faultstring inceleyin. faultstring, desteklenmeyen kodlama.

      Örnek hata mesajı:

      "faultstring":"Unsupported Encoding \"UTF-8\""
    2. Yukarıdaki hata mesajında, desteklenmeyen kodlamanın değerinin faultstring içinde görüldüğü gibi “UTF-8”.

      “UTF-8”, Apigee Edge'de desteklenen bir kodlama olmadığından, bu istek, şu hata koduyla birlikte 415 Unsupported Media Type hatasıyla başarısız oluyor: protocol.http.UnsupportedEncoding.

    İzleme aracı

    Trace'i kullanma:
    1. Başarısız istekle ilgili izine sahip değilseniz şuraya gidin: Çözüm.
    2. Hatayla ilgili bir iz yakaladıysanız, desteklenmeyen sorunlu Content-Encoding yanıtının bir parçası olarak arka uç sunucusu tarafından iletilen kodlama üstbilgisini İzleme aracında açıklandığı şekilde değiştirin.

Çözünürlük

  1. Apigee tarafından desteklenen kodlama listesine göz atın: Desteklenen kodlama
  2. Arka uç sunucusunun her zaman aşağıdakileri gönderdiğinden emin olun:
    • Yalnızca desteklenen kodlamayı İstekte Content-Encoding başlığı
    • Apigee Edge'e desteklenen biçimdeki yanıt yükü ve biçimle eşleşir. Content-Encoding başlıkta belirtildi

Desteklenen kodlama

Aşağıdaki tabloda Apigee Edge tarafından desteklenen kodlama biçimi listelenmektedir:

Başlık Kodlama Açıklama
Content-Encoding gzip Unix gzip biçimi
deflate Bu biçim, sıkıştırma sıkıştırma algoritmasına sahip zlib yapısını kullanır.

Spesifikasyon

Apigee, 415 Unsupported Media Type hata yanıtıyla aşağıdaki RFC spesifikasyonunu görebilirsiniz:

Spesifikasyon
RFC 7231, bölüm 6.5.13: 415 Desteklenmeyen Medya Türü

Dikkat edilmesi gereken önemli noktalar

Aşağıdakileri göz önünde bulundurun:

  • Apigee,415 API isteğinin bir parçası olarak Content-Encoding başlığını etkinleştirdikten sonra:
    • Bu tür isteklerle ilgili izini yakalayamazsınız.
    • Google Ads tarafından gönderilen hata yanıtının biçimini veya içeriğini CMPFault,{/Message gibi politikaları kullanan Apigee Edge.

    Bunun nedeni, bu hatanın İleti İşleyen’in herhangi bir aşamasında gerçekleşen çalıştırılabilir.

  • Apigee, desteklenmeyen kodlamanın atlatılması nedeniyle 415 hatası döndürürse Apigee yerine arka uç sunucunuzdan gelen yanıt başlığını girin, ardından düzeltilmesi arka uç sunucusuna bağlanmaya çalışın. Lütfen arka uç ekibinizle aşağıda açıklandığı şekilde çalışın: bu sorunu düzeltin.

Hâlâ Apigee Edge Destek Ekibi'nden yardım almak istiyorsanız Teşhis bilgileri toplanmalıdır'a gidin.

Teşhis bilgileri toplanmalıdır

Hâlâ Apigee Destek Ekibi'nden yardım almanız gerekiyorsa aşağıdaki Apigee Edge Destek Ekibi ile iletişime geçin:

Herkese açık Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Kuruluş adı
  • Ortam adı
  • API Proxy adı
  • 415 hatasını yeniden oluşturmak için kullanılan curl komutunu tamamlayın
  • API istekleri için izleme dosyası

Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:

  • Başarısız istekler için tam hata mesajı gözlemlendi
  • Ortam adı
  • API Proxy paketi
  • API istekleri için izleme dosyası
  • NGINX erişim günlükleri /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    Yer: ORG, ENV ve PORT# şununla değiştirilir: gerçek değerler.

  • Mesaj İşleyici sistem günlükleri /opt/apigee/var/log/edge-message- processor/logs/system.log