Una panoramica di 301
, 302
e307
L' RFC 7231 , l'attuale riferimento per la semantica e il contenuto del protocollo HTTP / 1.1, definisce il codice di stato 301
(Spostato permanentemente) e 302
(Trovato), che consente di modificare il metodo di richiesta da POST
a GET
. Questa specifica definisce anche il307
codice di stato (Reindirizzamento temporaneo) che non consente di modificare il metodo di richiesta da POST
a GET
.
Vedere più dettagli di seguito:
6.4.2. 301 Spostato in modo permanente
Il 301
codice di stato (Spostato in modo permanente) indica che alla risorsa di destinazione è stato assegnato un nuovo URI permanente e qualsiasi riferimento futuro a questa risorsa dovrebbe utilizzare uno degli URI inclusi. [...]
Nota: per ragioni storiche, un agente utente PU cambiare il metodo di richiesta da POST
a GET
per la richiesta successiva. Se questo comportamento non è desiderato, è 307
possibile utilizzare il codice di stato (Reindirizzamento temporaneo).
6.4.3. 302 Found
Il 302
codice di stato (Trovato) indica che la risorsa di destinazione risiede temporaneamente sotto un URI diverso. Poiché il reindirizzamento potrebbe essere modificato occasionalmente, il client dovrebbe continuare a utilizzare l'URI della richiesta effettiva per le richieste future. [...]
Nota: per ragioni storiche, un agente utente PU cambiare il metodo di richiesta da POST
a GET
per la richiesta successiva. Se questo comportamento non è desiderato, è 307
possibile utilizzare il codice di stato (Reindirizzamento temporaneo).
6.4.7. 307 Reindirizzamento temporaneo
Il 307
codice di stato (Reindirizzamento temporaneo) indica che la risorsa di destinazione risiede temporaneamente sotto un URI diverso e l'agente utente NON DEVE modificare il metodo di richiesta se esegue un reindirizzamento automatico a quell'URI. Poiché il reindirizzamento può cambiare nel tempo, il client dovrebbe continuare a utilizzare l'URI della richiesta effettiva originale per le richieste future. [...]
Nota: questo codice di stato è simile a 302
(Trovato), tranne per il fatto che non consente di modificare il metodo di richiesta da POST
a GET
. Questa specifica non definisce alcuna controparte equivalente per 301
(Moved Permanently) ( RFC 7238 , tuttavia, definisce il codice di stato 308
(Permanent Redirect) per questo scopo).
Il bisogno di 308
L' RFC 7238 è stato creato per definire il 308
codice di stato (Reindirizzamento permanente), che è simile a 301
(Spostato in modo permanente) ma non consente di modificare il metodo di richiesta da POST
a GET
.
Il 308
codice di stato è ora definito dalla RFC 7538 (che rendeva obsoleta la RFC 7238 ).
3. 308 Reindirizzamento permanente
Il 308
codice di stato (Reindirizzamento permanente) indica che alla risorsa di destinazione è stato assegnato un nuovo URI permanente e qualsiasi riferimento futuro a questa risorsa dovrebbe utilizzare uno degli URI inclusi. I client con funzionalità di modifica dei collegamenti dovrebbero ricollegare automaticamente i riferimenti all'URI della richiesta effettiva a uno o più dei nuovi riferimenti inviati dal server, ove possibile. [...]
Nota: questo codice di stato è simile a 301
(Spostato in modo permanente), tranne per il fatto che non consente di modificare il metodo di richiesta da
POST
aGET
.
Se abbiamo quanto segue:
+-----------+-----------+
| 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 |
+------------------------------------------------------------+-----------+-----------+
Scegliere il codice di stato più adatto
Michael Kropat ha messo insieme una serie di grafici decisionali che aiutano a determinare il miglior codice di stato per ogni situazione. Vedere quanto segue per 2xx
e 3xx
codici di stato: