Una visión general de 301
, 302
y307
El RFC 7231 , la referencia actual para la semántica y el contenido del protocolo HTTP / 1.1, define el código de estado 301
(Movido permanentemente) y 302
(Encontrado), que permite cambiar el método de solicitud de POST
a GET
. Esta especificación también define el 307
código de estado (Redirección temporal) que no permite cambiar el método de solicitud de POST
a GET
.
Ver más detalles a continuación:
6.4.2. 301 Movido Permanentemente
El 301
código de estado (movido permanentemente) indica que al recurso de destino se le ha asignado un nuevo URI permanente y cualquier referencia futura a este recurso debería usar uno de los URI adjuntos. [...]
Nota: Por razones históricas, un agente de usuario PUEDE cambiar el método de solicitud de POST
a GET
para la solicitud posterior. Si este comportamiento no es deseado, 307
se puede usar el código de estado (Redirección temporal) en su lugar.
6.4.3. 302 encontrado
El 302
código de estado (encontrado) indica que el recurso de destino reside temporalmente bajo un URI diferente. Debido a que la redirección podría ser alterada ocasionalmente, el cliente debe continuar usando el URI de solicitud efectivo para futuras solicitudes. [...]
Nota: Por razones históricas, un agente de usuario PUEDE cambiar el método de solicitud de POST
a GET
para la solicitud posterior. Si este comportamiento no es deseado, 307
se puede usar el código de estado (Redirección temporal) en su lugar.
6.4.7. Redirección temporal 307
El 307
código de estado (Redirección temporal) indica que el recurso de destino reside temporalmente bajo un URI diferente y el agente de usuario NO DEBE cambiar el método de solicitud si realiza una redirección automática a ese URI. Dado que la redirección puede cambiar con el tiempo, el cliente debe continuar utilizando el URI de solicitud efectiva original para futuras solicitudes. [...]
Nota: Este código de estado es similar a 302
(Encontrado), excepto que no permite cambiar el método de solicitud de POST
a GET
. Esta especificación no define una contraparte equivalente para 301
(Movido permanentemente) ( RFC 7238 , sin embargo, define el código de estado 308
(redireccionamiento permanente) para este propósito).
La necesidad de 308
El RFC 7238 se ha creado para definir el 308
código de estado (redireccionamiento permanente), que es similar a 301
(movido permanentemente) pero no permite cambiar el método de solicitud de POST
a GET
.
El 308
código de estado ahora está definido por el RFC 7538 (que obsoleto el RFC 7238 ).
3. 308 Redirección permanente
El 308
código de estado (redirección permanente) indica que al recurso de destino se le ha asignado un nuevo URI permanente y que cualquier referencia futura a este recurso debería usar uno de los URI adjuntos. Los clientes con capacidades de edición de enlaces deben volver a vincular automáticamente las referencias al URI de solicitud efectivo a una o más de las nuevas referencias enviadas por el servidor, cuando sea posible. [...]
Nota: Este código de estado es similar a 301
(Movido permanentemente), excepto que no permite cambiar el método de solicitud de
POST
a GET
.
Se tenemos lo siguiente:
+-----------+-----------+
| Permanent | Temporary |
+------------------------------------------------------------+-----------+-----------+
| Allows changing the request method from POST to GET | 301 | 302 |
+------------------------------------------------------------+-----------+-----------+
| Doesn't allow changing the request method from POST to GET | 308 | 307 |
+------------------------------------------------------------+-----------+-----------+
Elegir el código de estado más adecuado
Michael Kropat reunió un conjunto de cuadros de decisiones que ayudan a determinar el mejor código de estado para cada situación. Consulte los siguientes códigos de estado 2xx
y 3xx
: