2010-07-28 13 views

Respuesta

34

¿Quieres decir cómo lo manejan los navegadores? El servidor envía un código 302 junto con un encabezado Location, y el navegador solicita el nuevo URI especificado por el encabezado Location en su lugar.

A diferencia 301 (Moved Permanently), el navegador sigue usando el URI original al realizar solicitudes, en caso de que el código 302 desaparece

+3

Tenga en cuenta que hasta hace un par de años, los navegadores no almacenaban en la memoria caché 301. Ahora, Chrome lo hace y creo que Firefox sí. IE9 lo hará. – josh3736

+0

así que si no es un navegador que realiza la solicitud (y es una aplicación), entonces http no se redirigirá automáticamente a https. Tendrá que cambiar manualmente su cadena de solicitud a https. – ozzy432836

+0

Estoy confundido. ¿Quiere decir que HTTP 301 instruirá a los navegadores a almacenar el objetivo de redireccionamiento en su historial y eliminar la URL anterior? Porque parece que estás diciendo lo contrario. – Pieter

2

Los detalles internos de qué? 302 es un código de retorno que el servidor le da al cliente, lo que hace el cliente depende de ello. Los RFC brindan orientación sobre lo que debe hacer el cliente , pero en el mundo real 301, 302, 303 y 307 son manejados de la misma manera por los principales navegadores.

+1

He visto que IE8 e IE9 se comportan de manera diferente cuando el encabezado de la ubicación no especifica un URI absoluto ... tenga cuidado con el usuario – felickz

12

El servidor devuelve una respuesta HTTP con el código 302, que indica una redirección temporal, e incluye un encabezado Location: que indica el nuevo URI, p.

HTTP/1.1 302 Found 
Location: http://some-other-url 

Y potencialmente otros encabezados a discreción del servidor.

El navegador normalmente toma esto como una directiva para hacer automáticamente una nueva solicitud por separado para el otro URI especificado por el encabezado de ubicación. El cliente (navegador) no está forzado para hacer esto (podría, en teoría, simplemente mostrar un mensaje al usuario, o hacer lo que quiera), pero así es como se comportan los clientes HTTP.

Tenga en cuenta que dado que el 302 es una redirección temporal, un cliente de buen comportamiento seguirá utilizando la antigua dirección URL en el futuro, en lugar de ir directamente a la nueva (301 es una redirección permanente).

+0

Sugerencia: lea esta respuesta para una comprensión más profunda. – erbdex

9

Desde: http://www.ietf.org/rfc/rfc2616.txt y http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

10.3.3 302 Encontrado

El recurso solicitado reside temporalmente bajo una diferente URI. Dado que la redirección podría modificarse ocasionalmente, el cliente DEBERÍA continuar utilizando el URI de solicitud para futuras solicitudes. Esta respuesta solo se puede almacenar en caché si está indicada por un campo Cache-Control o Expires header .

El URI temporal DEBERÍA estar dado por el campo Ubicación en la respuesta . A menos que el método de solicitud fuera HEAD, la entidad de la respuesta DEBERÍA contener una breve nota de hipertexto con un hipervínculo al el nuevo URI (s).

Si el código de estado 302 se recibe en respuesta a una solicitud de otro de GET o HEAD, el agente de usuario no debe redirigir automáticamente la solicitud a menos que pueda ser confirmada por el usuario, ya que esto podría cambiar las condiciones en las que la solicitud fue emitida.

Note: RFC 1945 and RFC 2068 specify that the client is not allowed 
    to change the method on the redirected request. However, most 
    existing user agent implementations treat 302 as if it were a 303 
    response, performing a GET on the Location field-value regardless 
    of the original request method. The status codes 303 and 307 have 
    been added for servers that wish to make unambiguously clear which 
    kind of reaction is expected of the client. 
1

Sólo un Addon- importante, es para el cliente de parada para golpear misma dirección URL del servidor con la misma petición consecutiva/frecuencia.

Cuestiones relacionadas