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!
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!
Respuestas:
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).
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.
302
código de estadoUna respuesta con 302
es una forma común de realizar la redirección de URL. Junto con el 302
código de estado, la respuesta debe incluir un Location
encabezado con un URI diferente. Dicho encabezado será analizado por el agente de usuario y luego realizará la redirección:
Los navegadores web pueden cambiar de POST
a GET
en 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 302
se define el código de estado en el RFC 7231 :
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
Location
campo 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
POST
aGET
para la solicitud posterior. Si este comportamiento no es deseado,307
se 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 302
es:
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.
El RFC 7231 define los siguientes códigos de estado para la redirección:
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.
Location
encabezado fue lo que me ayudó). Resulta que estaba llamando a un servicio con http
y se trasladaron a https
, todo lo que obtuve en respuesta fue 302
, tan pronto como leí el Location
encabezado aquí, vi la http/https
diferencia. ¡Gracias!
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.
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:
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.
Según las definiciones del código de estado http, un 302 indica una redirección (temporal). "El recurso solicitado reside temporalmente en un URI diferente"
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).
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.
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.
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.
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:
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 .
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.
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;)).