Quelle est la différence entre HTTP 301
et 308
codes d'état?
301
(Déplacé de façon permanente): cette requête et toutes les futures requêtes doivent être adressées à l'URI donné.
308
(Redirection permanente): la demande et toutes les demandes futures doivent être répétées en utilisant un autre URI.
Ils semblent être similaires.
301
, 302
Et 307
Le RFC 7231 , référence actuelle pour la sémantique et le contenu du protocole HTTP/1.1, définit le 301
(déplacé de façon permanente) et 302
Code d'état (trouvé), permettant de modifier la méthode de requête de POST
à GET
. Cette spécification définit également le code d'état 307
(redirection temporaire) qui ne permet pas de modifier la méthode de requête de POST
à GET
.
Voir plus de détails ci-dessous:
6.4.2. 301 déplacé de façon permanente
Le code de statut
301
(Déplacé de façon permanente) indique qu'un nouvel URI permanent a été attribué à la ressource cible et que toute référence future à cette ressource doit utiliser l'un des URI inclus. [...]Remarque: Pour des raisons historiques, un agent d'utilisateur PEUT changer la méthode de requête de
POST
enGET
pour la requête suivante. . Si ce comportement n'est pas souhaité, le code d'état307
(Redirection temporaire) peut être utilisé à la place.
Le code de statut
302
(Trouvé) indique que la ressource cible réside temporairement sous un autre URI. Étant donné que la redirection peut être modifiée à l'occasion, le client doit continuer à utiliser l'URI de demande effectif pour les demandes futures. [...]Remarque: Pour des raisons historiques, un agent d'utilisateur PEUT changer la méthode de requête de
POST
enGET
pour la requête suivante. . Si ce comportement n'est pas souhaité, le code d'état307
(Redirection temporaire) peut être utilisé à la place.
6.4.7. 307 Redirection temporaire
Le code de statut
307
(Redirection temporaire) indique que la ressource cible réside temporairement sous un autre URI et que l'agent d'utilisateur NE DOIT PAS changer de méthode de requête s'il effectue une redirection automatique vers cet URI. Étant donné que la redirection peut changer au fil du temps, le client doit continuer à utiliser l'URI de demande effectif d'origine pour les demandes futures. [...]Remarque: Ce code de statut est similaire à
302
(Trouvé), sauf qu'il ne permet pas de modifier la méthode de requête dePOST
àGET
. Cette spécification ne définit aucune contrepartie équivalente pour301
(Déplacé de façon permanente) ( RFC 7238 définit toutefois le code d'état308
(Redirection permanente) à cette fin).
308
La RFC 7238 a été créée pour définir le code d'état 308
(redirection permanente), similaire à 301
(déplacé de façon permanente) mais ne permet pas de changer la méthode de requête de POST
à GET
.
Le code d'état 308
est maintenant défini par le RFC 7538 (qui rend obsolète le RFC 7238 ).
Le code de statut
308
(Redirection permanente) indique qu'un nouvel URI permanent a été attribué à la ressource cible et que toute référence future à cette ressource doit utiliser l'un des URI inclus. Les clients dotés de fonctionnalités d'édition de liens doivent automatiquement relier les références à l'URI de demande effectif à une ou plusieurs des nouvelles références envoyées par le serveur, dans la mesure du possible. [...]Remarque: Ce code de statut est similaire à
301
(Déplacé de façon permanente), sauf qu'il ne permet pas de modifier la méthode de requête dePOST
àGET
.
Se nous avons ce qui suit:
+-----------+-----------+
| 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 |
+------------------------------------------------------------+-----------+-----------+
Michael Kropat a mis en place un ensemble de diagrammes de décision qui permet de déterminer le meilleur code de statut pour chaque situation. Voir ce qui suit pour les codes de statut 2xx
Et 3xx
: