Quand dois-je utiliser la méthode GET ou POST? Quelle est la différence entre eux?

Quelle est la différence en utilisant la méthode GET ou POST ? Lequel est plus sécurisé? Quels sont les (dés) avantages de chacun d’eux?

( question similaire )

Ce n’est pas une question de sécurité. Le protocole HTTP définit les requêtes de type GET comme étant idempotentes , alors que les POST peuvent avoir des effets secondaires. En clair, cela signifie que GET est utilisé pour afficher quelque chose, sans le modifier, tandis que POST est utilisé pour changer quelque chose. Par exemple, une page de recherche doit utiliser GET, tandis qu’un formulaire qui modifie votre mot de passe doit utiliser POST.

Notez également que PHP confond un peu les concepts. Une requête POST reçoit une entrée de la chaîne de requête et du corps de la requête. Une requête GET obtient simplement une entrée de la chaîne de requête. Une requête POST est donc un sur-ensemble d’une requête GET; vous pouvez utiliser $_GET dans une requête POST, et il peut même être judicieux d’avoir des parameters portant le même nom dans $_POST et $_GET qui signifient des choses différentes.

Par exemple, supposons que vous ayez un formulaire pour éditer un article. L’article-id peut être dans la chaîne de requête (et, par conséquent, disponible via $_GET['id'] ), mais supposons que vous souhaitiez modifier l’ID d’article. Le nouvel identifiant peut alors être présent dans le corps de la requête ( $_POST['id'] ). OK, peut-être que ce n’est pas le meilleur exemple, mais j’espère que cela illustre la différence entre les deux.

Lorsque l’utilisateur entre des informations dans un formulaire et clique sur Envoyer, les informations peuvent être envoyées du navigateur au serveur de deux manières: dans l’URL ou dans le corps de la requête HTTP.

La méthode GET, utilisée dans l’exemple précédent, ajoute des paires nom / valeur à l’URL. Malheureusement, la longueur d’une URL est limitée, donc cette méthode ne fonctionne que s’il n’y a que quelques parameters. L’URL peut être tronquée si le formulaire utilise un grand nombre de parameters ou si les parameters contiennent de grandes quantités de données. De plus, les parameters transmis sur l’URL sont visibles dans le champ d’adresse du navigateur, ce qui n’est pas le meilleur endroit pour afficher un mot de passe.

L’alternative à la méthode GET est la méthode POST. Cette méthode regroupe les paires nom / valeur dans le corps de la requête HTTP, ce qui crée une URL plus propre et n’impose aucune limite de taille à la sortie des formulaires. C’est aussi plus sécurisé.

La meilleure réponse était la première.

Vous utilisez:

  • GET lorsque vous souhaitez récupérer des données (GET DATA).
  • POST lorsque vous souhaitez envoyer des données (POST DATA).

Voici le point clé de la demande GET

  • Les requêtes GET peuvent être mises en cache
  • Les requêtes GET restnt dans l’historique du navigateur
  • Les requêtes GET peuvent être mises en signet
  • Les requêtes GET ne doivent jamais être utilisées pour traiter des données sensibles
  • Les demandes GET ont des ressortingctions de longueur
  • Les requêtes GET ne doivent être utilisées que pour récupérer des données

et voici le point clé de la demande POST

  • Les requêtes POST ne sont jamais mises en cache
  • Les requêtes POST ne restnt pas dans l’historique du navigateur
  • Les demandes POST ne peuvent pas être mises en signet
  • Les requêtes POST n’ont aucune ressortingction sur la longueur des données

L’utilisation de GET a deux implications communes pour la “sécurité”. Étant donné que les données apparaissent dans la chaîne d’URL, il est possible que quelqu’un qui regarde par-dessus votre épaule à la barre d’adresse / URL puisse voir quelque chose auquel il ne devrait pas avoir access, comme un cookie de session qui pourrait potentiellement détourner votre session. Gardez à l’esprit que tout le monde a un téléphone avec appareil photo.

L’autre implication de sécurité de GET concerne les variables GET enregistrées dans la plupart des journaux d’access des serveurs Web dans le cadre de l’URL de demande. Selon la situation, le climat réglementaire et la sensibilité générale des données, cela peut potentiellement poser problème.

Certains clients / pare-feu / systèmes IDS peuvent être désapprouvés par les demandes GET contenant une quantité excessive de données et peuvent donc fournir des résultats non fiables.

POST prend en charge les fonctionnalités avancées telles que la prise en charge de l’entrée binary en plusieurs parties utilisée pour les téléchargements de fichiers sur les serveurs Web.

POST requirejs un en-tête de longueur de contenu qui peut augmenter la complexité d’une implémentation client spécifique à une application, car la taille des données soumises doit être connue à l’avance, empêchant ainsi la formation d’une requête client en mode incrémentiel en une seule passe. pour ceux qui choisissent d’abuser de HTTP en l’utilisant comme transport RPC.

D’autres ont déjà fait du bon travail en couvrant les différences sémantiques et la partie “quand” de cette question.

J’utilise GET lorsque je récupère des informations à partir d’ une URL et de POST lorsque j’envoie des informations à une URL.

Vous devez utiliser POST s’il y a beaucoup de données ou des informations sensibles (des éléments très sensibles nécessitent également une connexion sécurisée).

Utilisez GET si vous souhaitez que les utilisateurs puissent append un signet à votre page, car toutes les données sont incluses dans le signet.

Il suffit de faire attention aux personnes qui appuient sur REFRESH avec la méthode GET, car les données seront à nouveau envoyées à chaque fois sans avertir l’utilisateur (le POST avertit parfois l’utilisateur de renvoyer des données).

Les méthodes Get et Post n’ont rien à voir avec la technologie de serveur que vous utilisez, elle fonctionne de la même manière dans php, asp.net ou ruby. GET et POST font partie du protocole HTTP. Comme noté, le POST est plus sécurisé. Les formulaires POST ne sont pas non plus mis en cache par le navigateur. Le POST est également utilisé pour transférer de grandes quantités de données.

Ce document W3C explique l’utilisation de HTTP GET et POST.

Je pense que c’est une source faisant autorité.

Le résumé est (section 1.3 du document):

  • Utilisez GET si l’interaction ressemble plus à une question (c’est-à-dire qu’il s’agit d’une opération sûre telle qu’une requête, une opération de lecture ou une recherche).
  • Utilisez POST si:
    • L’interaction ressemble plus à un ordre, ou
    • L’interaction modifie l’état de la ressource de manière à ce que l’utilisateur puisse percevoir (par exemple, un abonnement à un service), ou
    • L’utilisateur doit être tenu responsable des résultats de l’interaction.

La raison de l’utilisation de POST lors de la modification de données:

  • Un accélérateur Web tel que Google Web Accelerator clique sur tous les liens (GET) d’une page et les met en cache. C’est très grave si les liens modifient les choses.
  • Un navigateur met en cache les requêtes GET afin que même si l’utilisateur clique sur le lien, il ne peut pas envoyer une demande au serveur pour exécuter la modification.
  • Pour protéger votre site / application contre CSRF, vous devez utiliser POST. Pour sécuriser complètement votre application, vous devez également générer un identifiant unique sur le serveur et l’envoyer dans la demande.

De même, ne placez pas d’informations sensibles dans la chaîne de requête (option uniquement avec GET) car elle apparaît dans la barre d’adresse, les signets et les journaux du serveur.

J’espère que cela explique pourquoi les gens disent que le POST est «sécurisé». Si vous transmettez des données sensibles, vous devez utiliser SSL.

GET et POST sont des méthodes HTTP qui peuvent atteindre des objectives similaires

GET est essentiellement utilisé pour obtenir (récupérer) des données, un GET ne devrait pas avoir de corps, à part les cookies, le seul endroit où passer des informations est dans l’URL et les URL sont de longueur limitée. envoyé fait partie de l’URL

N’utilisez jamais GET lors de l’envoi de mots de passe, de cartes de crédit ou d’autres informations sensibles !, les données sont visibles par tous dans l’URL, peuvent être des données mises en cache. GET est inoffensif lorsque vous rechargez ou rappelez le bouton, il sera marqué, les parameters restnt dans l’historique du navigateur, seuls les caractères ASCII sont autorisés.

POST peut impliquer n’importe quoi, comme stocker ou mettre à jour des données, ou commander un produit ou envoyer un courrier électronique. POST méthode POST a un corps.

POST méthode POST est sécurisée pour la transmission d’informations sensibles et confidentielles au serveur, elle ne sera pas visible dans les parameters de requête dans l’URL et les parameters ne sont pas enregistrés dans l’historique du navigateur. Il n’y a pas de ressortingctions sur la longueur des données. Lorsque nous rechargeons le navigateur, celui-ci doit alerter l’utilisateur que les données sont sur le point d’être soumises à nouveau. POST méthode POST ne peut pas être mise en signet

  1. La méthode GET est utilisée pour envoyer les données moins sensibles alors que la méthode POST est utilisée pour envoyer les données sensibles.
  2. En utilisant la méthode POST, vous pouvez envoyer une grande quantité de données par rapport à la méthode GET.
  3. Les données envoyées par la méthode GET sont visibles dans la barre d’en-tête du navigateur, tandis que les données envoyées par la méthode POST sont invisibles.

Utilisez la méthode GET si vous souhaitez récupérer les ressources depuis l’URL. Vous pouvez toujours voir la dernière page si vous appuyez sur le bouton de retour de votre navigateur, et cela peut être mis en signet, donc ce n’est pas aussi sûr que la méthode POST.

Utilisez la méthode POST si vous souhaitez “soumettre” quelque chose à l’URL. Par exemple, vous souhaitez créer un compte Google et vous devrez peut-être remplir toutes les informations détaillées, puis vous cliquez sur le bouton «Soumettre» (la méthode POST est appelée ici), une fois que vous soumettez avec succès et essayez d’appuyer sur le bouton de votre navigateur. , vous obtiendrez une erreur ou un nouveau formulaire vierge, au lieu de la dernière page avec le formulaire rempli.

Quelques notes importantes doivent être mentionnées

Selon l’explication de w3cschools.com

Pour obtenir la méthode:

  • Les requêtes GET peuvent être mises en cache

  • Les requêtes GET restnt dans l’historique du navigateur

  • Les requêtes GET peuvent être mises en signet

  • Les requêtes GET ne doivent jamais être utilisées pour traiter des données sensibles

  • Les demandes GET ont des ressortingctions de longueur

  • Les requêtes GET ne doivent être utilisées que pour récupérer des données

Pour la méthode post

  • Les requêtes POST ne sont jamais mises en cache

  • Les requêtes POST ne restnt pas dans l’historique du navigateur

  • Les demandes POST ne peuvent pas être mises en signet

  • Les requêtes POST n’ont aucune ressortingction sur la longueur des données

Obtenez plus de détails sur

https://www.w3schools.com/tags/ref_httpmethods.asp

La méthode GET :

  • Il est utilisé uniquement pour l’envoi de date de 256 caractères

  • En utilisant cette méthode, les informations peuvent être vues sur le navigateur

  • C’est la méthode par défaut utilisée par les formulaires

  • Ce n’est pas si sécurisé.


La méthode POST :

  • Il est utilisé pour envoyer des données illimitées.

  • Avec cette méthode, les informations ne peuvent pas être vues sur le navigateur

  • Vous pouvez explicitement mentionner la méthode POST

  • Il est plus sécurisé que la méthode GET

  • Il fournit des fonctionnalités plus avancées