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

Quelle est la différence lorsque vous utilisez la méthode GET ou POST ? Lequel est le plus sûr? Quels sont les avantages (inconvénients) de chacun d'eux?

( question similaire )

202
demandé sur Community 2009-02-03 00:15:47

15 réponses

Ce n'est pas une question de sécurité. Le protocole HTTP définit les requêtes GET-type comme étant idempotent , alors que les messages peuvent avoir des effets secondaires. En anglais simple, cela signifie que GET est utilisé pour regarder quelque chose, sans le changer, tandis que POST est utilisé pour changer quelque chose. Par exemple, une page de recherche devrait utiliser GET, tandis qu'un formulaire qui change votre mot de passe devrait utiliser POST.

aussi, notez que PHP confond un peu les concepts. Une requête POST reçoit les entrées de la chaîne de requête et à travers le corps de requête. Une requête GET ne reçoit que les entrées de la chaîne de requête. Ainsi, une requête POST est un super-ensemble D'une requête GET; vous pouvez utiliser $_GET dans une requête POST, et il peut même être logique d'avoir des paramètres avec le même nom dans $_POST et $_GET qui signifient des choses différentes.

par exemple, disons que vous avez une forme pour éditer un article. L'Article-id peut être dans la chaîne de requête (et, donc, disponible via $_GET['id'] ), mais disons que vous voulez modifier l'id d'article. Le nouvel id peut alors être présent dans le corps de la requête ( $_POST['id'] ). OK, c'est peut-être pas le meilleur exemple, mais j'espère qu'il illustre la différence entre les deux.

219
répondu troelskn 2017-05-23 12:18:22

lorsque l'utilisateur entre des informations dans un formulaire et clique sur Soumettre , il y a deux façons dont l'information peut être envoyée du navigateur au serveur: dans L'URL, ou dans le corps de la demande HTTP.

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

l'alternative à la méthode GET est la méthode POST. Cette méthode empile les paires nom/valeur dans le corps de la requête HTTP, ce qui rend L'URL plus propre et n'impose aucune limite de taille sur la sortie des formulaires. Il est également plus sûr.

73
répondu IAdapter 2015-07-19 07:55:52

la meilleure réponse fut la première.

vous utilisez:

  • GET lorsque vous souhaitez récupérer des données (OBTENIR les DONNÉES).
  • POST quand vous voulez envoyer des données (POST DATA).
37
répondu alex 2011-04-04 06:10:51

de w3schools.com voici les points clés de la demande GET

  • les requêtes GET peuvent être mises en cache
  • les requêtes GET restent dans l'historique du navigateur
  • OBTENIR les demandes peuvent être mis en signet
  • les requêtes GET ne doivent jamais être utilisées pour traiter des données sensibles
  • les requêtes GET ont des restrictions de longueur
  • les requêtes GET ne doivent être utilisées que pour récupérer des données

et voici les points clés de la requête POST

  • POST demandes ne sont jamais mis en cache
  • POST demandes ne restent pas dans l'historique du navigateur
  • AFFICHER les demandes ne peuvent pas être mis en signet
  • les demandes de poste n'ont aucune restriction quant à la longueur des données
28
répondu Yasir Shabbir Choudhary 2018-10-03 15:00:03

il y a deux implications" de sécurité " communes à L'utilisation de GET. Puisque les données apparaissent dans la chaîne D'URL, il est possible que quelqu'un qui regarde au-dessus de votre épaule à la barre D'adresse/URL puisse voir quelque chose qu'il ne devrait pas être au courant d'un cookie de session qui pourrait potentiellement être utilisé pour détourner votre session. Gardez à l'esprit tout le monde a des téléphones d'appareil photo.

l'autre implication de sécurité de GET A à voir avec les variables GET étant journalisées à la plupart des journal d'accès 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 peuvent soulever des préoccupations.

certains systèmes clients / pare-feu / IDS peuvent désapprouver les requêtes GET contenant une quantité excessive de données et peuvent donc fournir des résultats impossibles à comparer.

POST prend en charge des fonctionnalités avancées telles que la prise en charge des entrées binaires multi-parties utilisées pour le téléchargement de fichiers vers des serveurs web.

POST nécessite un en-tête content-length qui peut augmenter la complexité de la mise en œuvre d'un client spécifique à une application puisque la taille des données soumises doit être connue à l'avance empêchant une demande d'un client d'être formé dans un mode incrémental mono-pass exclusif.. Peut-être un problème mineur pour ceux qui choisissent D'abuser de HTTP en l'utilisant comme un transport RPC.

d'Autres l'ont déjà fait du bon travail en couvrant les différences sémantiques et l' "quand" fait partie de cette question.

19
répondu Einstein 2009-02-02 22:19:44

j'utilise GET when i'm retrieving information de une URL et POST when i'm sending information à une URL.

17
répondu Mark Biek 2009-02-02 21:23:11

vous devez utiliser POST s'il y a beaucoup de données, ou une sorte d'informations sensibles (les choses vraiment sensibles ont aussi besoin d'une connexion sécurisée).

utilisez GET si vous voulez que les gens soient en mesure de marquer votre page, parce que toutes les données sont incluses avec le marque-page.

il suffit de faire attention aux personnes qui frappent REFRESH avec la méthode GET, parce que les données seront envoyées de nouveau à chaque fois sans prévenir l'utilisateur (POST avertit parfois l'utilisateur le renvoi de données).

15
répondu Grant 2009-02-02 21:23:28

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 en php, asp.net ou ruby. GET et POST font partie du protocole HTTP. Comme mark l'a noté, POST est plus sûr. Les formulaires postaux ne sont pas non plus mis en cache par le navigateur. La POSTE est également utilisé pour transférer de grandes quantités de données.

10
répondu sarsnake 2009-02-02 21:21:21

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

je pense que c'est une source officielle.

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

  • Utiliser GET si l'interaction est plus comme une question (c'est à dire, c'est une sécurité de fonctionnement comme une requête, l'opération de lecture ou de recherche).
  • Utiliser POST if:
    • l'interaction est plus comme un ordre, ou
    • l'interaction change l'état de la ressource d'une manière que le l'utilisateur perçoit (par exemple, un abonnement à un service), ou
    • l'utilisateur soit tenu responsable des résultats de l'interaction.
10
répondu chus 2017-08-18 15:09:03

La raison de l'utilisation POST lorsque vous modifiez des données:

  • un accélérateur web comme Google Web Accelerator cliquera sur tous les liens (GET) sur une page et les mettra en cache. C'est très mauvais si les liens font des changements aux choses.
  • un navigateur cache des requêtes, donc même si l'utilisateur clique sur le lien, il ne peut pas envoyer de requête au serveur pour exécuter la modification.
  • pour protéger votre site / application contre CSRF vous devez utilisez POST. De sécuriser totalement votre application, vous devez alors également générer un identifiant unique sur le serveur et l'envoyer dans la demande.

aussi, ne mettez pas les informations sensibles dans la chaîne de requête (seule option avec GET) parce qu'elle apparaît dans la barre d'adresse, les signets et les journaux du serveur.

j'espère que c'est ce qui explique pourquoi les gens disent que le POST est "sécuriser". Si vous transmettez des données sensibles, vous devez utiliser SSL.

8
répondu Sarel Botha 2009-02-03 18:47:17

GET et POST sont les méthodes HTTP, qui peut atteindre des objectifs similaires

GET est essentiellement pour obtenir (extraire) des données, un GET ne devrait pas avoir un corps, donc à part les cookies, le seul endroit pour passer l'information est dans L'URL et les URLs sont limitées dans la longueur , GET est moins sûr par rapport à POST parce que les données envoyées fait partie de L'URL

ne Jamais utiliser de GET lors de l'envoi de mots de passe, carte de crédit ou d'autres informations sensibles!, Les données sont visibles pour tout le monde dans L'URL, peuvent être mises en cache des données . GET est inoffensif lorsque nous rechargeons ou rappel bouton, il sera marqué livre, les paramètres restent dans l'histoire du navigateur, seuls les caractères ASCII autorisés.

POST peut impliquer n'importe quoi, comme stocker ou mettre à jour des données, ou commander un produit, ou envoyer un e-mail. POST méthode a un corps.

La méthode POST est sécurisée pour transmettre des informations sensibles et confidentielles au serveur.elle ne sera pas visible dans les paramètres de requête dans L'URL et les paramètres ne sont pas sauvegardés dans l'historique du navigateur. Il n'y a pas de restrictions sur la longueur des données. Lors du rechargement, le navigateur doit avertir l'utilisateur que les données sont sur le point d'être soumises à nouveau. POST méthode ne pouvant pas être marquée d'un signet

6
répondu user3540599 2016-11-02 00:06:46
  1. la méthode GET est utilisée pour envoyer les données les moins sensibles, tandis 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 alors que les données envoyées par la méthode POST sont invisibles.
2
répondu Honey 2016-11-01 19:48:00

utilisez la méthode GET si vous voulez récupérer les ressources à partir de L'URL. Vous pouvez toujours voir la dernière page si vous appuyez sur le bouton arrière de votre navigateur, et il pourrait être signet, de sorte qu'il n'est pas aussi sûr que la méthode POST.

utilisez la méthode POST si vous voulez 'soumettre' quelque chose à L'URL. Par exemple, vous voulez créer un compte google et vous pouvez avoir besoin de remplir toutes les informations détaillées, puis vous appuyez sur le bouton "Soumettre" (la méthode POST est appelée ici), une fois que vous soumettez avec succès, et essayer d'appuyer sur le bouton de retour de votre navigateur, vous obtiendrez une erreur ou un nouveau formulaire vide, au lieu de la dernière page avec le formulaire rempli.

0
répondu rObOtAndChalie 2016-03-06 18:44:06

quelques notes importantes à mentionner

selon w3cschools.com 's explication

Pour La Méthode Get:

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

  • les requêtes GET restent dans l'historique du navigateur

  • les requêtes GET peuvent être marquées

  • les requêtes GET ne doit jamais être utilisé lors du traitement de données sensibles

  • les requêtes GET ont des restrictions 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 postales ne sont jamais mises en cache

  • les requêtes POST ne restent pas dans le navigateur histoire

  • AFFICHER les demandes ne peuvent pas être mis en signet

  • les demandes postales n'ont aucune restriction quant à la longueur des données

obtenir plus de détails sur

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

0
répondu Talon.Zhou 2017-12-20 09:54:24

Le GET la méthode:

  • il est utilisé uniquement pour l'envoi de 256 caractères date

  • "
  • lorsque cette méthode est utilisée, l'information peut être vue sur le navigateur

  • c'est la méthode par défaut utilisée par les formulaires

  • Il n'est pas garanti.


la méthode POST :

  • il est utilisé pour l'envoi de données illimitées.

  • avec cette méthode, l'information ne peut pas être vue sur le navigateur

  • vous pouvez mentionner explicitement la POST méthode

  • GET méthode

  • Il fournit des fonctionnalités plus avancées

-9
répondu Sidharam Anache 2012-09-30 07:18:59