Condividi tramite


Problemi di limitazione delle richieste e HTTP 403 - Problemi non consentiti

Facendo riferimento all'articolo su Azure Gestione API Serie di risoluzione dei problemi, questo è il quinto scenario del lab. Assicurarsi di aver seguito le istruzioni di configurazione del lab in base a questa situazione, per ricreare il problema.

Versione originale del prodotto: servizio Gestione API
Numero KB originale: 4464928

Sintomi

L'API Risorse recupera i dettagli personali dell'utente, i post di social media, i commenti e le foto e usa la risposta restituita per un progetto di Machine Learning. Stranamente dopo alcuni giorni di utilizzo, l'operazione GetPosts ha iniziato a generare l'errore HTTP 403 - Accesso negato , mentre le altre operazioni funzionano correttamente come previsto.

{
"statusCode": 403,
"message": "Accesso negato"
}

Oltre a quanto sopra riportato, si riscontra anche un errore HTTP 429 - Troppe richieste durante la chiamata dell'operazione GetComments per ogni seconda richiesta. Il problema viene risolto automaticamente dopo 10 secondi, ma si ripete una volta che viene nuovamente effettuata la prima chiamata all'API. Il comportamento non viene osservato per le altre operazioni.

{
"statusCode": 429,
"message": "Limite di velocità superato. Riprovare in 5 secondi."
}

Passaggi per la risoluzione dei problemi

  • È possibile riscontrare l'errore HTTP 403 - Accesso negato quando sono implementati criteri di restrizione di accesso.

  • Controllare la traccia del controllo Gestione API, si dovrebbe notare un criterio "ip-filter" che filtra (consente/nega) le chiamate da indirizzi IP e/o intervalli di indirizzi specifici.

  • Per controllare l'ambito dei criteri "ip-filter", selezionare il pulsante Calcola criteri effettivi . Se non vengono visualizzati criteri di restrizione di accesso implementati in alcun ambito, il passaggio di convalida successivo deve essere eseguito a livello di prodotto, passando al prodotto associato e quindi facendo clic sull'opzione Criteri.

    <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>
    
  • Per il secondo problema (HTTP 429 - Troppe richieste) si seguirà la stessa procedura controllando la traccia del controllo Gestione API e verificando se è presente un criterio "rate-limit" o "rate-limit-by-key" implementato in qualsiasi ambito.

  • Se si calcola il criterio effettivo, è necessario notare un criterio di restrizione dell'accesso (rate-limit-by-key) implementato nell'ambito globale, ad esempio nell'opzione "Elaborazione in ingresso" in 'Tutte le API'.

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

Altre informazioni sui criteri ip-filter e rate-limit-by-key in Gestione API.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.