Sentido común de redireccionamiento

Cuando salí del trabajo hoy, vi algunos conocimientos básicos de redirección, que también me abren los ojos. A menudo usaba 301 y 302 antes, pero nunca había usado ni comprendido otros códigos de estado 3XX. Descubrí que todavía hay muchos conocimientos y problemas resueltos en el original.

El proceso redirigido

El navegador primero visita la URL del servidor A, el servidor A devuelve el encabezado con la URL de la ubicación B y el código de estado de 3XX, el navegador lee el código de estado de respuesta 3XX, obtiene la ubicación del encabezado y luego salta al servidor B URL.
Debe saber que la redirección la inicia el navegador. Si el servidor devuelve un código de estado 3XX a un terminal que no es un navegador, es posible que la redirección no se complete.
En cierto año, hubo una interfaz API escrita en PHP que debería haber estado funcionando durante mucho tiempo. He estado usando HTTP, que a menudo es secuestrado, y luego el líder quiere reemplazarlo con HTTPS encriptado, pero el cliente no puede publicar la versión. Más tarde, el lado del servidor consideró cambiar la interfaz de todo el sitio de HTTP 302 a HTTPS para discutir la viabilidad de este esquema. Si conoce el proceso y los conocimientos anteriores, este plan se aprobará de inmediato.

Redirección permanente

Indica que el recurso se redirige permanentemente a la nueva URL.
Un caso más común es la migración del sitio antiguo al sitio nuevo. Después de que el sitio antiguo se cierra directamente, la página del sitio antiguo se ha incluido en el motor de búsqueda. En este momento, se utiliza el esquema de redireccionamiento permanente.
Redirigir permanentemente los dos códigos de estado
301. La solicitud de redireccionamiento generalmente usa el método GET, independientemente del método usado en la solicitud original.
308. Para complementar 301. La redirección debe utilizar el método de solicitud original y el acceso al cuerpo del paquete.

Redirección temporal

Indica que el recurso solo se redirige temporalmente a una nueva URL.
Hay cinco códigos de estado para el redireccionamiento temporal. Se utilizan comúnmente dos 302 y 307 correspondientes.
302. La solicitud de redireccionamiento generalmente usa el método GET, independientemente de la solicitud original. Tipo de método.
303. No significa que se cambie el recurso, solo significa que la solicitud original se reemplaza con la respuesta de la nueva URL. Independientemente del método utilizado en la solicitud original. Básicamente lo mismo que 302, por lo que 303 se usa raramente en el mercado y 302. Se usa
307. Para complementar 302. La redirección debe usar el método de solicitud original y el acceso al cuerpo del paquete.
Baidu está usando 307 para saltar, la entrada del navegador http://www.baidu.com cambiará 307 a https://www.baidu.com

300. Hay varias respuestas posibles a esta solicitud y el navegador puede elegir una de ellas. No existe un estándar que el servidor pueda seguir para tomar decisiones en lugar de los usuarios.
304. Dígale al navegador que el contenido solicitado no ha cambiado desde la última visita. El recurso se puede obtener directamente del caché del navegador.
Los dos últimos no se usan comúnmente.

Los más utilizados son 301302307308

El problema de la redirección circular

ERR_TOO_MANY_REDIRECTS es
un error muy común. Si visita la página A y luego redirige a la visita B, y luego B realiza la visita de redirección a A, se trata de una redirección de bucle. Este error también se informará después de múltiples redireccionamientos.

Lo encontré una vez en el entorno de producción. Una vez encontré un error de ERR_TOO_MANY_REDIRECTS en el registro, pero el código de salto 3XX no se encontró en la configuración de Nginx, entonces, ¿cómo saltó en bucle? Más tarde vi esta configuración

    location / {
        try_files $uri $uri/ /index.html$is_args$args;
    }

Más tarde, se encontró que no había index.html en el directorio raíz, uri no existía, y luego el directorio uri / no existía, y finalmente se inició una sub-solicitud interna para index.html.index.html no existen, luego a la ubicación, y se redirigen repetidamente. Finalmente, se informa del error ERR_TOO_MANY_REDIRECTS.

Supongo que te gusta

Origin blog.csdn.net/feifeixiang2835/article/details/94051474
Recomendado
Clasificación