Quelle est la différence entre HTTP GET et HTTP POST?

Ce formulaire contient des informations potentiellement sensibles. Vous devez donc utiliser POST et non GET.

GET vs. POST

Strictement parlant, la différence entre GET et POST réside dans la manière dont les applications sont transférées. Les informations dans GET sont transmises dans l'URL. Si vous avez déjà vu une URL contenant des points d'interrogation et des symboles d'union, vous recherchiez une demande GET: example.com/request.php?var1=foo&var2=bar est une chaîne GET qui code la variable "var1" en tant que "foo" et la variable "var2" en tant que "barre". Les informations POST sont incluses dans le corps de la demande et ne sont pas visibles dans la chaîne d'URL (et ne sont donc pas visibles pour l'utilisateur).

Directives formelles

Formellement, les directives HTML stipulent que GET doit être utilisé pour les demandes "idempotentes" ou pour celles qui ne changent rien. Par exemple, imaginez une page Web qui renvoie la météo locale: "exemple.com/weather.php?zipcode=12345". Le fait de présenter cette demande encore et encore ne change rien. POST doit être utilisé pour des applications non idempotentes. Par exemple, supposons que vous fassiez un achat avec votre carte de crédit. Présenter cette demande encore et encore pourrait entraîner des changements assez importants. Étant donné que le fait de soumettre à nouveau une demande POST a des conséquences (même mineures), les navigateurs Web demandent généralement à l'utilisateur de confirmer qu'il souhaite réellement soumettre à nouveau le formulaire de requête.

Avantages de GET

GET présente de nombreux avantages par rapport au POST. Étant donné que GET est codé dans le cadre d'une URL, vous pouvez couper et coller l'URL et la partager avec d'autres personnes. Les demandes GET peuvent également être marquées. Si vous vérifiez périodiquement l'heure, vous pouvez ajouter "example.com/weather.php?zipcode=12345" à la barre "Favoris" de votre navigateur. Ainsi, lorsque vous cliquez sur ce lien, vous chargez automatiquement votre page météo personnalisée. Les requêtes GET étant visibles (et modifiables) par l'utilisateur, elles peuvent également être piratées. Par exemple, si le site météo n'offre pas un moyen évident de modifier l'emplacement de la demande météo, vous pouvez modifier manuellement "12345" en "99762" pour afficher la météo de Nome, en Alaska, plutôt que celle de Schenectady.

Quand utiliser POST

Même dans des situations idempotentes, POST a parfois des utilisations claires. Certaines d'entre elles sont basées sur la sécurité ou la légalité. Les variables GET sont transmises "en clair", car vous ne souhaitez pas envoyer d'informations via des cartes de crédit, des numéros de sécurité sociale, des mots de passe ou des informations utilisateur confidentielles via GET. Étant donné que les données POST deviennent plus sombres, il est préférable dans ces situations. POST est également utilisé pour la transmission de grandes quantités de données, même si les données ne sont pas sensibles. Techniquement, les URL (et donc les variables GET) peuvent avoir une longueur illimitée. Cependant, étant donné que de nombreux navigateurs limitent l'espace qu'une URL peut avoir, GET est généralement considéré comme adéquat uniquement pour les requêtes relativement courtes.