Question

Je suis nouveau dans la programmation Web et je suis simplement curieux de connaître les méthodes GET et POST d’envoi de données d’une page à une autre.

On dit que la méthode GET est plus rapide que POST mais je ne sais pas pourquoi. Une des raisons que j'ai pu trouver est que GET ne peut prendre que 255 caractères? Y a-t-il une autre raison? S'il vous plaît, quelqu'un m'explique.

Était-ce utile?

La solution

Ce n’est pas une question de vitesse. Il existe de nombreux cas où le POST est plus applicable. Par exemple, les moteurs de recherche indexeront les URL GET et les navigateurs pourront les marquer d'un signet et les afficher dans l'historique. Par conséquent, si vous effectuez des actions telles que la modification d'une base de données basée sur une requête GET, cela peut être dangereux car certains bots peuvent également traverser l'URL.

L'autre cas peut être un problème de sécurité. Si vous publiez des informations d'identification à l'aide de GET, elles seront répertoriées dans l'historique du navigateur et les fichiers journaux du serveur.

Autres conseils

Un autre aspect de la publication http est qu'il peut s'agir de 2 appels lorsque l'en-tête http Expect: 100-Continue est utilisé. Le premier navigateur envoie les en-têtes de publication http et les réponses du serveur avec "HTTP 100 Continuer". Lorsque le navigateur le reçoit, il envoie le corps actuel.

http://omaralzabir.com/atlas_2_http_pall_

Je pense que c'est la réponse que l'auteur recherchait.

En regardant le protocole http, POST ou GET devrait être aussi facile et rapide à analyser. Je dirais qu'il n'y a pas de différence de performance.

Consultez les en-têtes HTTP bruts

http GET

GET /index.html?userid=joe&password=guessme HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0

POST http

POST /login.jsp HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

userid=joe&password=guessme

De mon point de vue, les performances ne doivent pas être prises en compte lorsque l'on compare GET et POST.

Vous devriez penser à GET comme "un endroit où aller" et à POST comme "faisant quelque chose". Par exemple, un formulaire de recherche doit être soumis à l'aide de GET car la page de résultat de la recherche est un "lieu". et l'utilisateur voudra le mettre en favori ou le récupérer de son historique à une date ultérieure. Si vous soumettez le formulaire à l'aide de POST, l'utilisateur ne peut recréer la page qu'en soumettant à nouveau le formulaire. Par contre, si vous deviez exécuter une action telle que cliquer sur un bouton de suppression, vous ne voudriez pas la soumettre avec GET, car l'action serait répétée chaque fois que l'utilisateur reviendrait à l'URL.

Juste mes quelques centimes de 2016.

Je crée un système de messagerie simple. Au début, j'ai utilisé POST pour recevoir de nouvelles alertes. Dans jQuery j’avais:

$.post('/a/alerts', 'stamp=' + STAMP, function(result)
{
});

Et en PHP, j'ai utilisé $ _POST ['stamp']. Même de localhost, j’ai reçu 90-100 ms pour chaque requête de ce type. J'ai simplement changé:

$.get('/a/alerts?stamp=' + STAMP, function(result)
{
});

et en PHP sont passés à $ _GET ['stamp']. Donc un peu moins de 1 minute de changements. Désormais, chaque demande prend 30 à 40 ms .

Ainsi, GET peut être deux fois plus rapide que POST . Bien sûr, pas toujours, mais pour de petites quantités de données, j'obtiens toujours les mêmes résultats.

GET est un peu plus rapide car les valeurs sont envoyées dans l'en-tête , contrairement à POST , les valeurs sont envoyées. dans la requête body , au format spécifié par le type de contenu.

Généralement, le type de contenu est application / x-www-form-urlencoded. Le corps de la requête utilise donc le même format que la chaîne de requête:

paramètre = valeur & aussi = un autre Lorsque vous utilisez un fichier téléchargé dans le formulaire, vous utilisez plutôt le codage multipart / form-data, dont le format est différent. C'est plus compliqué.

Je suis d'accord avec les autres réponses, mais il n'a pas été mentionné que les demandes GET peuvent être mises en cache alors que les demandes POST ne le sont jamais. Je pense que c'est la raison principale pour laquelle certaines requêtes GET sont exécutées plus rapidement. (Bien entendu, cela signifie parfois qu'aucune demande n'est réellement envoyée. Par conséquent, ce n'est pas réellement la demande GET qui est plus rapide, mais le cache de votre navigateur.)

Méthodes HTTP: GET et POST: http://www.w3schools.com/tags/ ref_httpmethods.asp

POST augmentera vos en-têtes davantage, ce qui l’agrandira davantage, mais la différence doit être vraiment négligeable. Par conséquent, je ne vois pas pourquoi cela devrait poser problème.

N'oubliez pas que la meilleure façon de parler HTTP est d'utiliser GET uniquement pour les actions et POST pour les données. Vous n'avez pas à le faire, mais vous ne voulez pas non plus avoir un cas où les robots Google peuvent, par exemple, insérer, supprimer ou manipuler des données qui étaient uniquement destinées à un humain à gérer simplement parce qu'elles suivent les liens trouvés. .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top