¿Qué significa exactamente HTTP / 1.1 302?

120

Un artículo que leí una vez decía que significa saltar (de un URI a otro), pero detecté este "302" ¡incluso cuando en realidad no había ningún salto!

Dios mio
fuente
1
Puede haber buena información sobre esto aquí en la documentación de wc3.org .
Copas
2
Preste mucha atención: example.com example.com y example.com son lógicamente distintos, y un sitio que desee acceder a través de una única URL puede redirigir de uno a otro para lograrlo. Por supuesto, los redireccionamientos 302 son una mala elección para esto ... pero es posible que haya visto variaciones igualmente sutiles.
Shog9
Consulte este sitio ( hostingpill.com/http-302-error )
virusarthak

Respuestas:

74

Un redireccionamiento 302 significa que la página se movió temporalmente, mientras que un 301 significa que se movió permanentemente.

Los 301 son buenos para el valor de SEO, mientras que los 302 no lo son porque los 301 les indican a los clientes que olviden el valor de la URL original, mientras que los 302 mantienen el valor de la URL original y, por lo tanto, pueden reducir potencialmente el valor al crear dos URL lógicamente distintas que cada uno produce el mismo contenido (los motores de búsqueda los ven como duplicados distintos en lugar de como un solo recurso con dos nombres).

CodeMonkey1313
fuente
58

Esta pregunta se hizo hace mucho tiempo, mientras el RFC 2616 todavía estaba rondando. Algunas respuestas a esta pregunta se basan en dicho documento, que ya no es relevante en la actualidad. Citando a Mark Nottingham quien, en el momento de redactar este artículo, copreside los Grupos de Trabajo IETF HTTP y QUIC:

No utilice RFC2616 . Bórrelo de sus discos duros, marcadores y grabe (o recicle responsablemente) cualquier copia que se imprima.

El antiguo RFC 2616 ha sido suplantado por los siguientes documentos que, en conjunto, definen el protocolo HTTP / 1.1:

Así que mi objetivo es proporcionar una respuesta basada en el RFC 7231, que es la referencia actual para los códigos de estado HTTP / 1.1.

El 302código de estado

Una respuesta con 302es una forma común de realizar la redirección de URL. Junto con el 302código de estado, la respuesta debe incluir un Locationencabezado con un URI diferente. Dicho encabezado será analizado por el agente de usuario y luego realizará la redirección:


Ejemplo de redirección


Los navegadores web pueden cambiar de POSTa GETen la solicitud posterior. Si este comportamiento no es deseado, el307 se puede utilizar el código de estado (Redirección temporal) en su lugar.

Así es como 302se define el código de estado en el RFC 7231 :

6.4.3. 302 Encontrado

los 302 código de estado (Encontrado) indica que el recurso de destino reside temporalmente en un URI diferente. Dado que la redirección puede modificarse en ocasiones, el cliente debe continuar utilizando el URI de solicitud efectivo para solicitudes futuras.

El servidor DEBE generar un Locationcampo de encabezado en la respuesta que contenga una referencia de URI para los diferentes URI. El agente de usuario PUEDE utilizar elLocation valor campo para la redirección automática. La carga útil de respuesta del servidor generalmente contiene una breve nota de hipertexto con un hipervínculo a los diferentes URI (s).

Nota: Por razones históricas, un agente de usuario PUEDE cambiar el método de solicitud de POSTa GETpara la solicitud posterior. Si este comportamiento no es deseado, 307se puede utilizar el código de estado (Redirección temporal) en su lugar.

Según los documentos web MDN de Mozilla , un caso de uso típico 302es:

La página Web no está disponible temporalmente por motivos que no han sido imprevistos. De esa forma, los motores de búsqueda no actualizan sus enlaces.

Otros códigos de estado para la redirección

El RFC 7231 define los siguientes códigos de estado para la redirección:

  • 301 (Movido permanentemente)
  • 302 (Encontró)
  • 307 (Redireccionamiento temporal)

El RFC 7238 se creó para definir otro código de estado para la redirección:

  • 308 (Redirección permanente)

Consulte esta respuesta para obtener más detalles.

cassiomolina
fuente
2
bueno, mi dolor de dos días se acabó gracias a ti (el Locationencabezado fue lo que me ayudó). Resulta que estaba llamando a un servicio con httpy se trasladaron a https, todo lo que obtuve en respuesta fue 302, tan pronto como leí el Locationencabezado aquí, vi la http/httpsdiferencia. ¡Gracias!
Eugene
Tengo el mismo motivo de este error. Mi Javascript apuntó a la ubicación https incorrecta y, por lo tanto, la redirección falló. Gracias por el comentario.
Max
25

Una forma sencilla de ver las redirecciones HTTP 301 frente a las 302 es:

Suponga que tiene un marcador para " http://sample.com/sample ". Utiliza un navegador para ir allí.

Una redirección 302 a una URL diferente en este punto significaría que debe mantener su marcador en " http://sample.com/sample ". Esto se debe a que la URL de destino puede cambiar en el futuro.

Una redirección 301 a una URL diferente significaría que su marcador debería cambiar para apuntar a la nueva URL, ya que es una redirección permanente.

Barba roja
fuente
9

De RFC 2616 (la especificación del protocolo de transferencia de hipertexto) :

10.3.3 302 Encontrado

   El recurso solicitado reside temporalmente en un URI diferente.
   Dado que la redirección puede modificarse en ocasiones, el cliente DEBE
   continúe usando Request-URI para futuras solicitudes. Esta respuesta
   solo se puede almacenar en caché si lo indica un encabezado Cache-Control o Expires
   campo.

   El URI temporal DEBE ser proporcionado por el campo Ubicación en el
   respuesta. A menos que el método de solicitud sea HEAD, la entidad del
   La respuesta DEBE contener una breve nota de hipertexto con un hipervínculo a
   los nuevos URI (s).

Fuente:

http://www.ietf.org/rfc/rfc2616.txt

Reginaldo
fuente
6

De Wikipedia :

El código de estado de respuesta HTTP 302 Encontrado es la forma más común de realizar una redirección. Es un ejemplo de práctica industrial que contradice la norma.

Paul Sonier
fuente
5

302 es una respuesta que indica un cambio de ubicación del recurso: "Encontrado".

La URL donde debería estar el recurso ahora debería estar en el encabezado de respuesta "Ubicación".

El "salto" debe ser realizado por el cliente solicitante (realice una nueva solicitud a la URL del recurso en el campo de encabezado Ubicación de respuesta).

Demi
fuente
5

En términos de SEO, 301 y 302 ambos son buenos, depende de la situación,

Si solo se puede devolver una versión (es decir, la otra redirige a ella), ¡genial! Este comportamiento es beneficioso porque reduce el contenido duplicado. En el caso particular de los redireccionamientos a URL de barra inclinada final, nuestros resultados de búsqueda probablemente mostrarán la versión de la URL con el código de respuesta 200 (la mayoría de las veces la URL de barra inclinada final), independientemente de si la redirección fue 301 o 302.

Sunil
fuente
3

El código HTTP 302 es para redireccionamiento, consulte http://en.wikipedia.org/wiki/HTTP_302 .

Le dice al navegador que lee una página que vaya a otro lugar y cargue otra página. Su uso es muy común.

Ser advertido
fuente
1

Según RFC 1945 / Protocolo de transferencia de hipertexto - HTTP / 1.0 :

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.
Alexandre Neukirchen
fuente
0
  • El código 302 indica una redirección temporal .
  • Una de las características más notables que lo diferencian de un redireccionamiento 301 es que, en el caso de los redireccionamientos 302, la fuerza del SEO no se traslada a una nueva URL.
  • Esto se debe a que esta redirección ha sido diseñada para usarse cuando existe la necesidad de redirigir contenido a una página que no será la definitiva. Así, una vez eliminada la redirección, la página original no habrá perdido su posicionamiento en el buscador de Google.

EJEMPLO: - Aunque no es muy común que nos encontremos en la necesidad de un redireccionamiento 302, esta opción puede resultar muy útil en algunos casos. Estos son los casos más frecuentes:

  • Cuando nos damos cuenta de que hay algún contenido inapropiado en una página. Mientras solucionamos el problema, podemos redirigir al usuario a otra página que pueda ser de su interés.
  • En el caso de que un ataque a nuestro sitio web requiera la restauración de alguna de las páginas, este redireccionamiento puede ayudarnos a minimizar la incidencia.

Una redirección 302 es un código que les dice a los visitantes de una URL específica que la página se ha movido temporalmente, dirigiéndolos directamente a la nueva ubicación.

  • En otras palabras, la redirección 302 se activa cuando los robots de Google u otros motores de búsqueda solicitan cargar una página específica. En ese momento, gracias a esta redirección, el servidor devuelve una respuesta automática indicando una nueva URL.

  • De esta forma se evitan errores y molestias tanto a los buscadores como a los usuarios, garantizando una navegación fluida.

Para obtener más detalles, consulte este artículo .

virusarthak
fuente
0

Un código de estado 302 es un código de estado de respuesta HTTP que indica que el recurso solicitado se ha movido temporalmente a un URI diferente. Dado que la ubicación o la directiva de redirección actual pueden cambiarse en el futuro, un cliente que reciba un código de respuesta 302 Found debe continuar usando el URI original para solicitudes futuras.

Una respuesta HTTP con este código de estado proporcionará además una URL en el campo de encabezado Ubicación. Esta es una invitación al agente de usuario (por ejemplo, un navegador web) para realizar una segunda solicitud, de lo contrario idéntica, a la nueva URL especificada en el campo de ubicación. El resultado final es una redirección a la nueva URL.

Sourabh Bhavsar
fuente
0

Para cualquiera que pueda tener curiosidad sobre el nombre, solo voy a agregar que probablemente se llame "Encontrado" porque el recurso principal (por ejemplo, una página web privada) que el usuario pretende recibir no está disponible en ese momento (por ejemplo, el usuario aún no ha demostrado su identidad), por lo que el servidor ha encontrado un nuevo recurso que el usuario puede recibir (que es una página de inicio de sesión en el caso de uso más común).

También es "perderse y ser encontrado" al escondite, lo que significa que un recurso perdido bajo un estado 302 solo se pierde temporalmente , no se supone que se pierda para siempre (a menos que un jugador tenga malas intenciones;)).

aderchox
fuente