Google se compromete a promover la equidad racial para las comunidades negras. Ver cómo.
Esta página se ha traducido con Cloud Translation API.
Switch to English

Cómo manejar las redirecciones

Algunos lenguajes de programación tienen implementaciones de HTTP que requieren un manejo especial para las redirecciones.

En respuesta a una solicitud de la API REST, el servidor API Nido devuelve una redirección. El cliente REST detecta la redirección y solicita la página que el cliente se redirige a. Algunas implementaciones de HTTP no envían la cabecera de Autorización a la URI redirigido, y esto resulta en un error no autorizado 401.

Por ejemplo, supongamos que pide foo.com. El servidor responde con foo.com una redirección a bar.com. Cartero o Curl pasan a la cabecera de Autorización para foo y luego al bar. Otras implementaciones de HTTP, como Golang de Python y de, no pasan automáticamente el encabezado de autorización a la URI redirigido.

Cómo funciona

El diagrama siguiente muestra la secuencia de lo que sucede cuando se produce un redireccionamiento.

secuencia de redireccionamiento

Para la comparación, esto es lo que sucede cuando no se produce una redirección.

Sin secuencia de redireccionamiento

Ejemplo

En general, es una buena práctica de codificación para anticipar que la aplicación HTTP de la lengua podría no pasar el encabezado de autorización.

El código debe evitar que el redireccionamiento automático y realizar la llamada redirección después de añadir las cabeceras de vuelta.

Por ejemplo, en movimiento, puede hacer esto:

customClient := http.Client {
    CheckRedirect: func(redirRequest *http.Request, via []*http.Request)
    error {
        // Go's http.DefaultClient does not forward headers when a redirect 3xx
        // response is received. Thus, the header (which in this case contains the
        // Authorization token) needs to be passed forward to the redirect
        // destinations.
        redirRequest.Header = req.Header

        // Go's http.DefaultClient allows 10 redirects before returning an
        // an error. We have mimicked this default behavior.s
        if len(via) >= 10 {
            return errors.New("stopped after 10 redirects")
        }
        return nil
    },
}

Para más ejemplos, véase:

Almacenar la ubicación redirigida

También es una buena práctica para almacenar la ubicación redirigida sobre una base por usuario. En otras palabras, después de un usuario inicia sesión y una redirección se recibe, almacenar la ubicación firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/ y hacer todas las solicitudes posteriores directamente a esta URI.

Almacenamiento de la ubicación redirigida ahorra tiempo y evita la carga del servidor innecesario.

Para aprender más acerca de cómo se relacionan las redirecciones a la limitación de velocidad, consulte Límites de velocidad de datos .

El uso de rizo para probar la API

Cuando se utiliza rizo> = v7.58, puede obtener 401 errores no autorizadas de las llamadas a la API que implican redirecciones. A partir de v7.58 rizo, cabeceras de autorización personalizado no se reenvían a la URL de redireccionamiento devuelto por la API.

Para tener en cuenta esto en rizo> = v7.58, utilice el --location-trusted , marca con cualquier llamada de línea de comandos.