Erreur HTTP 302

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

Le code de réponse HTTP 302 Found est une manière classique de réaliser des Redirections d'URL non permanentes.

Une réponse avec ce code donne en plus un URL dans le champ d'entête location (en). Le User-Agent (c.à.d le navigateur web) est invité par la réponse contenant ce code à refaire une nouvelle requête à l'URL spécifié dans le champ location. Beaucoup de navigateurs webs implémentent ce code d'une manière qui viole les standards, en changeant le type de la nouvelle requête vers GET, sans tenir compte du type de la requête originale (c'est-à-dire POST)[1]. C'est pour cette raison que deux nouveaux statuts ont été créés : HTTP 303 et HTTP 307 pour distinguer les deux comportements, avec 303 changeant le type de la requête vers GET et 307 conservant le type de la requête originelle. Malgré ces deux codes bien distincts, le code 302 est toujours employé dans les frameworks web pour préserver la compatibilité avec les navigateurs n'implémentant pas le HTTP/1.1[2].

L'amélioration de RFC 2616[3] a changé la définition pour autoriser les User-Agents à transformer une requête POST en requête GET[4].

Exemple[modifier | modifier le code]

Requête client:

GET /index.html HTTP/1.1
Host: www.example.com

Réponse serveur:

HTTP/1.1 302 Found
Location: http://www.iana.org/domains/example/

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

  1. Eric Lawrence, « HTTP Methods and Redirect Status Codes », EricLaw's IEInternals blog (consulté le 20 août 2011)
  2. « Request and response objects | Django documentation | Django », Docs.djangoproject.com (consulté le 23 juin 2014)
  3. (en) Request for Comments no 2616.
  4. « draft-ietf-httpbis-p2-semantics-26 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content », Tools.ietf.org (consulté le 23 juin 2014)

Liens externes[modifier | modifier le code]

  • RFC 2616[1] (HTTP 1.1)
  • RFC 1945[2] (HTTP 1.0)