Compartir a través de


Solicitud de problemas de limitación y HTTP 403: problemas prohibidos

En el artículo sobre la serie de solución de problemas de Azure API Management, este es el quinto escenario del laboratorio. Asegúrese de que ha seguido las instrucciones de configuración del laboratorio según esto para volver a crear el problema.

Versión original del producto: servicio API Management
Número de KB original: 4464928

Síntomas

La API de recursos captura los detalles personales del usuario, las publicaciones de redes sociales, los comentarios y las fotos y utiliza la respuesta devuelta para un proyecto de aprendizaje automático. Extrañamente después de unos días de usarlo, la operación GetPosts comenzó a iniciar http 403: error prohibido , mientras que las otras operaciones funcionan correctamente según lo esperado.

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

Además de lo anterior, también encontramos un error HTTP 429: demasiadas solicitudes al invocar la operación GetComments para cada segunda solicitud. El problema se resuelve automáticamente después de 10 segundos, pero vuelve a repetirse una vez que se realiza la primera llamada a la API. El comportamiento no se observa para las otras operaciones.

{
"statusCode": 429,
"message": "Se supera el límite de velocidad. Inténtelo de nuevo en 5 segundos".
}

Pasos para solucionar problemas

  • El error HTTP 403: prohibido se puede producir cuando se implementa cualquier directiva de restricción de acceso.

  • Compruebe el seguimiento del inspector de APIM y observe la existencia de una directiva "ip-filter" que filtra (permite o deniega) las llamadas desde direcciones IP o intervalos de direcciones IP específicos.

  • Para comprobar el ámbito de la directiva "ip-filter", seleccione el botón Calcular directiva efectiva. Si no ve ninguna directiva de restricción de acceso implementada en ningún ámbito, el siguiente paso de validación debe realizarse en el nivel de producto; para ello, vaya al producto asociado y, a continuación, haga clic en la opción Directivas.

    <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>
    
  • Para el segundo problema (HTTP 429 : demasiadas solicitudes), se seguirá el mismo procedimiento comprobando el seguimiento del inspector de APIM y comprobando si hay alguna directiva "rate-limit" o "rate-limit-by-key" implementada en cualquier ámbito.

  • Si calcula la directiva efectiva, debe observar una directiva de restricción de acceso (rate-limit-by-key) implementada en el ámbito global, es decir, en "Procesamiento de entrada" en la opción "Todas las 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>
    

Obtenga más información sobre las directivas ip-filter y rate-limit-by-key en APIM.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.