Las diferencias entre los diversos códigos de redireccionamiento HTTP 3XX no son claras para mí. Sí, he leído las especificaciones, pero parece haber cierta discrepancia entre la práctica estándar y la práctica real aquí.
El 301
código de redireccionamiento parece lo suficientemente claro: esto significa que el recurso se movió permanentemente a otro URI, y las solicitudes futuras deberían usar ese URI.
Y el 307
código de redireccionamiento también parece claro: significa que la redirección es temporal, y las solicitudes futuras aún deberían usar el URI original.
Pero no puedo decir cuál es la diferencia entre 302
y 303
, o por qué cualquiera de ellos es realmente diferente 301
. Parece que 302
originalmente estaba destinado a ser una redirección temporal , (como 307
), pero en la práctica, la mayoría de los navegadores lo trataron como un 303
. Pero, ¿cuál es la diferencia entre a 303
y a 301
? ¿Se 301
supone que significa que la redirección es más permanente?
fuente
La diferencia entre 303 y 307 es esta:
303 : Ver otro. La solicitud se recibe correctamente, pero los resultados deben recuperarse utilizando un GET en la URL de redireccionamiento.
307 : redirección temporal. Toda la solicitud debe ser redirigida a la nueva url. Cualquier información de publicación debe volver a publicarse.
Tenga en cuenta que 302 estaba destinado a tener el comportamiento de 307, pero la mayoría de los navegadores lo implementaron como el comportamiento de 303 (los cuales no existían en ese momento). Por lo tanto, esos dos nuevos códigos se introdujeron para reemplazar 302.
La diferencia entre 301 y 303:
301 : el documento se mueve. Las solicitudes futuras deben usar la nueva URL. Esta url es obsoleta.
Nota: tenga cuidado con este código. Los navegadores y los servidores proxy tienden a aplicar un almacenamiento en caché realmente agresivo, por lo que si responde con un 301, alguien podría tardar mucho tiempo en volver a visitar esa URL.
303 : La solicitud se recibió correctamente. Cualquier solicitud PUT se procesa. El documento resultante se puede recuperar de la URL de redireccionamiento. La solicitud futura aún debe ir a la url original.
fuente