Aracılığıyla paylaş


İstek azaltma sorunları ve HTTP 403 - Yasak sorunları

Azure API Management Sorun Giderme Serisi makalesine başvuran bu, laboratuvarın beşinci senaryosudur. Sorunu yeniden oluşturmak için laboratuvar kurulum yönergelerini izlediğinize emin olun.

Orijinal ürün sürümü: API Management Hizmeti
Özgün KB numarası: 4464928

Belirtiler

Kaynaklar API'si kullanıcının kişisel bilgilerini, sosyal medya gönderilerini, yorumlarını ve fotoğraflarını getirir ve bir makine öğrenmesi projesi için döndürülen yanıtı kullanır. Birkaç gün kullandıktan sonra garip bir şekilde GetPosts işlemi HTTP 403 - Yasak hatası oluşturmaya başlarken diğer işlemler beklendiği gibi düzgün çalışıyor.

{
"statusCode": 403,
"message": "Yasak"
}

Yukarıdakiler dışında, her saniye istek için GetComments işlemini çağırırken HTTP 429 - Çok fazla istek hatasıyla karşılaşıyoruz. Sorun 10 saniye sonra otomatik olarak çözülür, ancak API'ye ilk çağrı yeniden yapıldıktan sonra yeniden oluşur. Diğer işlemler için davranış gözlemlenmez.

{
"statusCode": 429,
"message": "Hız sınırı aşıldı. 5 saniye içinde yeniden deneyin."
}

Sorun giderme adımları

  • HTTP 403 - Erişim kısıtlama ilkesi uygulandığında yasak hatası oluşturulabilir.

  • APIM denetçisi izlemesini denetleyin ve belirli IP adreslerinden ve/veya adres aralıklarından gelen çağrıları filtreleyen (izin veren/reddeden) bir 'ip filtresi' ilkesinin varlığını fark etmelisiniz.

  • 'ip-filter' ilkesinin kapsamını denetlemek için Etkin ilkeyi hesapla düğmesini seçin. Herhangi bir kapsamda uygulanan bir erişim kısıtlama ilkesi görmüyorsanız, sonraki doğrulama adımının ilgili ürüne gidip İlkeler seçeneğine tıklayarak ürün düzeyinde gerçekleştirilmesi gerekir.

    <inbound>
        <base />
        <choose>
            <when condition="@(context.Operation.Name.Equals("GetPosts"))">
                <ip-filter action="forbid">
                    <address-range from="0.0.0.0" to="255.255.255.255" />
                </ip-filter>
            </when>
        </choose>
    </inbound>
    
  • İkinci sorun için (HTTP 429 - Çok fazla istek) APIM denetçisi izlemesini denetleyerek ve herhangi bir kapsamda uygulanan herhangi bir 'hız sınırı' veya 'hız sınırı-anahtar' ilkesi olup olmadığını denetleyerek aynı yordamı izleyeceğiz.

  • Geçerli ilkeyi hesaplarsanız, Genel kapsamda uygulanan bir erişim kısıtlama ilkesi (anahtara göre hız sınırı) fark etmelisiniz; örneğin 'Tüm API'ler' seçeneğinde 'Gelen işleme' altında.

    <inbound>
        <choose>
            <when condition="@(context.Operation.Name.Equals("GetComments"))">
                <rate-limit-by-key calls="1" renewal-period="10" increment-condition="@(context.Response.StatusCode == 200)" counter-key="@(context.Request.IpAddress)" />
            </when>
        </choose>
    </inbound>
    

APIM'de ip filtresi ve anahtara göre hız sınırı ilkeleri hakkında daha fazla bilgi edinin.

Yardım için bize ulaşın

Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.