¿Cómo funciona HTTP 302?


¿Cómo funciona HTTP 302? Me gustaría conocer el funcionamiento interno

Author: GilliVilla, 2010-07-28

5 answers

¿Te refieres a 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 de 301 (Moved Permanently), el navegador continúa utilizando el URI original para hacer solicitudes, en caso de que el código 302 desaparezca

 39
Author: Michael Mrozek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-28 19:52:08

El servidor devuelve una respuesta HTTP con el código 302, indicando una redirección temporal, e incluye un encabezado Location: indicando el nuevo URI, por ejemplo

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

Y potencialmente otras cabeceras a discreción del servidor.

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

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

 15
Author: Tyler McHenry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-28 19:56:36

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 en un URI diferente. Dado que la redirección puede ser alterada en ocasiones, el cliente DEBE continúe utilizando el URI de solicitud para solicitudes futuras. Esta respuesta solo se puede almacenar en caché si se indica mediante un encabezado Cache-Control o Caduca campo.

El URI temporal DEBE ser dada por el campo de ubicación en el respuesta. A menos que el método de solicitud fuera HEAD, la entidad de la la respuesta DEBE contener una breve nota de hipertexto con un hipervínculo a el nuevo URI(s).

Si el código de estado 302 se recibe en respuesta a una solicitud de otro que GET o HEAD, el agente de usuario NO DEBE redirigir automáticamente el solicitar a menos que pueda ser confirmado por el usuario, ya que esto podría cambiar las condiciones bajo las cuales se emitió la solicitud.

  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.
 9
Author: xgMz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-31 01:46:04

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

 2
Author: James Antill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-28 19:55:46

Solo un complemento- Es importante destacar que es para detener el cliente para golpear la misma url del servidor con la misma solicitud consecutivamente / con frecuencia.

 1
Author: A.T.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-10 12:38:35