195 votes

Quelle est la différence entre les codes d'état HTTP 301 et 308 ?

Quelle est la différence entre HTTP 301 y 308 codes d'état ?

  • 301 (Déplacé de façon permanente) : Cette demande et toutes les demandes futures doivent être dirigées vers l'URI indiqué.

  • 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.

0 votes

Pas de code 308 dans tools.ietf.org/html/rfc2616 y tools.ietf.org/html/rfc6585 La question doit donc être adressée à l'inventeur de ce code non standard.

7 votes

Il existe une spécification RFC 7538, il s'agit donc d'un véritable code HTTP.

3 votes

Bien, tools.ietf.org/html/rfc7538 : Note : Ce code d'état est similaire au 301, sauf qu'il ne permet pas de changer la méthode de demande de POST à GET.

358voto

Cássio Mazzochi Molin Points 11962

Une vue d'ensemble de 301 , 302 y 307

El RFC 7231 qui est la référence actuelle pour la sémantique et le contenu du protocole HTTP/1.1, définit les éléments suivants 301 (Déplacé de façon permanente) et 302 (Found), qui permet de changer la méthode de requête de POST a GET . Cette spécification définit également le 307 (Redirection temporaire) qui ne permet pas de changer la méthode de requête de l'une à l'autre. POST a GET .

Voir plus de détails ci-dessous :

6.4.2. 301 Moved Permanently

El 301 (Moved Permanently) indique que la ressource cible a été supprimée. cible s'est vu attribuer un nouvel URI permanent et que toutes les futures référence à cette ressource doit utiliser l'un des URI ci-joints. [...]

Note : Pour des raisons historiques, un agent utilisateur PEUT changer la méthode de requête de POST a GET pour la demande suivante. Si ce comportement n'est pas souhaité, le 307 (Redirection temporaire) peut être utilisé à la place.

6.4.3. 302 Trouvé

El 302 Le code d'état (Found) indique que la ressource cible réside temporairement sous un autre URI. Comme la redirection peut être modifiée à l'occasion, le client doit continuer à utiliser l'URI de la demande effective. URI de demande effective pour les demandes futures. [...]

Note : Pour des raisons historiques, un agent utilisateur PEUT modifier la méthode de requête de POST a GET pour la demande suivante. Si ce comportement n'est pas souhaité, le 307 (Redirection temporaire) peut être utilisé à la place.

6.4.7. 307 Redirection temporaire

El 307 (Redirection temporaire) indique que la ressource cible se trouve réside temporairement sous un URI différent et que l'agent utilisateur NE DOIT PAS changer la méthode de demande s'il effectue une redirection automatique automatique vers cet URI. Comme la redirection peut changer dans le temps le client doit continuer à utiliser l'URI de demande effective d'origine original pour les demandes futures. [...]

Note : Ce code d'état est similaire à 302 (Found), sauf qu'il ne permet pas de changer la méthode de requête de POST a GET . Ce site ne définit pas de contrepartie équivalente pour 301 (Déplacé de façon permanente) ( RFC 7238 Cependant, le code de statut est défini comme suit 308 (Redirection permanente) à cette fin).

La nécessité de 308

El RFC 7238 a été créé pour définir le 308 (Redirection permanente), qui est similaire à l'adresse suivante 301 (Moved Permanently) mais ne permet pas de changer la méthode de requête de POST a GET .

El 308 est maintenant défini par le code d'état RFC 7538 (qui a rendu obsolète le RFC 7238 ).

3. 308 Redirection permanente

El 308 (Permanent Redirect) indique que la ressource cible a été redirigée vers un autre site. cible s'est vu attribuer un nouvel URI permanent et que toutes les futures référence à cette ressource doit utiliser l'un des URI joints. Les clients dotés de capacités d'édition de liens doivent automatiquement relier les références à l'URI de la demande effective vers une ou plusieurs des nouvelles références envoyées par le serveur, si possible. [...]

Note : Ce code d'état est similaire à 301 (Déplacé en permanence), sauf qu'il ne permet pas de changer la méthode de requête de POST a 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       |
+------------------------------------------------------------+-----------+-----------+

Choisir le code d'état le plus approprié

Michael Kropat mettre en place un ensemble de diagrammes de décision qui aide à déterminer le meilleur code d'état pour chaque situation. Voir ce qui suit pour 2xx y 3xx codes d'état :

Picking a 2xx or 3xx status code

10 votes

Étant donné que la question portait spécifiquement sur la distinction entre 301 et 308, pourriez-vous donner plus d'explications à ce sujet ? " ne permet pas de changer la méthode de requête de POST a GET " ? Cela signifierait-il qu'un formulaire affiché ne peut pas être traité, mais qu'un nouveau formulaire peut être mis en ligne et affiché lors d'une prochaine demande ?

4 votes

Ce projet de spécification ( tools.ietf.org/id/draft-hunt-http-rest-redirect-00.html ) suggère que les services ReSTful devraient utiliser 308 même pour les GET. "Les codes de redirection HTTP 301-306 NE DOIVENT PAS être utilisés, sauf si le fournisseur de services sait que le client est en fait un agent utilisateur." Cependant, il ne s'agit que d'un projet. Je ne suis pas sûr si/quand il sera accepté.

3 votes

Ce poste, le-guide-définitif-pour-obtenir-vs-post clarifie pourquoi l'autorisation d'un POST (sûr) demander à être modifié en un à GET (non sécurisée dans la mesure où les données sont transmises en les ajoutant à l'url - et les urls peuvent être sauvegardées - y compris les mots de passe) La demande peut poser un problème de sécurité et doit généralement être évitée, sauf si vous connaître qu'il soit sûr de changer. De nos jours, il semble qu'il soit généralement admis et préféré d'utiliser 307, 308 plutôt que 301, 302. Mais vous devez vérifier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X