Maison  >  Article  >  développement back-end  >  Quelle est la différence entre GET et POST en HTTP ?

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

零下一度
零下一度original
2017-06-23 13:08:031447parcourir

La différence entre GET et POST en HTTP

GET et POST sont les deux méthodes de base des requêtes HTTP. Toute personne ayant été exposée au développement WEB peut faire la différence.

La différence la plus intuitive est que GET inclut des paramètres dans l'URL et que POST transmet les paramètres via le corps de la requête.

Vous avez peut-être écrit vous-même d'innombrables requêtes GET et POST, ou vous avez lu de nombreux sites Web faisant autorité résumant leurs différences. Vous savez exactement quand utiliser laquelle.

Quand on vous pose cette question lors d'un entretien, votre cœur est rempli de confiance et de joie.

Vous avez facilement donné une "réponse standard" :

  • GET n'est pas valide lorsque le navigateur renvoie Nocif, et POST soumettra le demande à nouveau.

  • L'adresse URL générée par GET peut être mise en signet, mais POST ne le peut pas.

  • Les requêtes GET seront activement mises en cache par le navigateur, mais le POST ne le sera pas à moins d'être défini manuellement.

  • Les requêtes GET ne peuvent être codées qu'en URL, tandis que POST prend en charge plusieurs méthodes de codage.

  • Les paramètres de la requête GET seront entièrement conservés dans l'historique du navigateur, tandis que les paramètres du POST ne seront pas conservés.

  • Les paramètres transmis dans l'URL de la requête GET ont des limites de longueur, mais il n'y a pas de limite de longueur pour le POST.

  • Concernant le type de données des paramètres, GET n'accepte que les caractères ASCII, tandis que POST n'a aucune restriction.

  • GET est moins sécurisé que POST car les paramètres sont directement exposés sur l'URL, il ne peut donc pas être utilisé pour transmettre des informations sensibles.

  • Les paramètres GET sont transmis via l'URL et POST est placé dans le corps de la requête.

(Cette réponse standard est référencée par w3schools)

"Malheureusement, ce n'est pas la réponse que nous voulons!"

S'il vous plaît, dites-moi la vérité. . .

Si je vous disais qu'il n'y a essentiellement aucune différence entre GET et POST, le croiriez-vous ?
Enlevons le manteau de GET et POST et soyons honnêtes les uns envers les autres !

Que sont GET et POST ? Deux méthodes d'envoi de requêtes dans le protocole HTTP.

Qu'est-ce que HTTP ? HTTP est un protocole basé sur TCP/IP sur la façon dont les données sont communiquées sur le World Wide Web.

La couche inférieure de HTTP est TCP/IP. Ainsi, la couche inférieure de GET et POST est également TCP/IP, c'est-à-dire que GET/POST sont tous deux des liens TCP. GET et POST peuvent faire la même chose. Vous devez ajouter le corps de la requête à GET et les paramètres d'URL à POST. Techniquement, c'est tout à fait réalisable.

Alors, quelles sont les différences dans les « réponses standards » ?

Dans notre monde du World Wide Web, TCP est comme une voiture. Nous utilisons TCP pour transporter des données. Il est très fiable et il ne manquera jamais d'éléments. Mais si toutes les voitures sur la route se ressemblent exactement, le monde ressemblera à un désordre. Les voitures délivrant des messages urgents pourraient être bloquées par des voitures chargées de marchandises devant elles, et l’ensemble du système de transport serait définitivement paralysé. Pour éviter que cela ne se produise, les règles de trafic HTTP sont nées. HTTP a défini plusieurs catégories de services pour le transport automobile, notamment GET, POST, PUT, DELETE, etc. HTTP stipule que lors de l'exécution d'une requête GET, la voiture doit être étiquetée avec un GET (définissez la méthode sur GET) et nécessiter de mettre le données transmises sur le toit de la voiture (dans l'url) pour un enregistrement facile. S'il s'agit d'une demande POST, une étiquette POST doit être apposée sur la voiture et la marchandise doit être placée dans le transport. Bien sûr, vous pouvez aussi cacher secrètement certaines marchandises dans la voiture pendant le GET, mais c'est très honteux, vous pouvez également mettre des données sur le toit pendant le POST, ce qui rend les gens ridicules. HTTP n'est qu'un code de conduite et TCP est la base de la façon dont GET et POST sont implémentés.

Cependant, on voit seulement que HTTP impose des exigences sur le canal de transmission (url ou corps de la requête) des paramètres GET et POST. D'où vient la limite de taille des paramètres dans la « réponse standard » ?

Dans notre monde du World Wide Web, il existe un autre rôle important : les entreprises de transport. Différents navigateurs (initiant des requêtes http) et serveurs (acceptant des requêtes http) sont des sociétés de transport différentes. Bien qu'en théorie, vous puissiez empiler un nombre illimité de marchandises sur le toit de la voiture (un nombre illimité de paramètres peuvent être ajoutés à l'URL). Mais les entreprises de transport ne sont pas stupides. Le chargement et le déchargement sont également très coûteux. Ils limiteront le volume d'un seul envoi pour contrôler les risques. Une trop grande charge de données pèsera sur le navigateur et le serveur. La règle non écrite dans l'industrie est que (la plupart) des navigateurs limitent généralement la longueur des URL à 2 Ko, et (la plupart) des serveurs peuvent gérer des URL jusqu'à 64 Ko. Tout excédent ne sera pas traité. Si vous utilisez le service GET et cachez secrètement des données dans le corps de la requête, différents serveurs les gèrent différemment. Certains serveurs vous aideront à décharger et à lire les données, tandis que d'autres les ignoreront directement. Par conséquent, bien que GET puisse apporter le corps de la requête, il peut être utilisé. Ne peut pas être garanti.

D'accord, maintenant vous savez que GET et POST sont essentiellement des liens TCP, il n'y a pas de différence. Cependant, en raison des réglementations HTTP et des limitations du navigateur/serveur, ils présentent certaines différences dans le processus de candidature.

Pensez-vous que cet article se termine ainsi ?

Notre grand BOSS attend toujours d'apparaître. . .

À quel point ce BOSS est-il mystérieux ? Lorsque vous essayez de trouver « la différence entre GET et POST » sur Internet, cela n’est jamais mentionné dans les résultats de recherche que vous verrez. Qu'est-ce qu'il est exactement ? . .

Il existe une autre différence majeure entre GET et POST :

GET génère un paquet de données TCP ; POST génère deux paquets de données TCP.

Long chemin :

Pour la requête GET, le navigateur enverra l'en-tête http et les données ensemble, et le serveur répondra avec 200 (renvoie les données)

Et pour ; POST, le navigateur envoie d'abord l'en-tête, le serveur répond par 100 continue, le navigateur envoie ensuite les données et le serveur répond par 200 ok (renvoie les données).

En d'autres termes, GET ne nécessite qu'un seul trajet en voiture pour livrer la marchandise, tandis que POST nécessite deux trajets. Lors du premier trajet, allez dire bonjour au serveur "Bonjour, je vais en livrer un. plus tard. "Quand les marchandises arrivent, vous ouvrez la porte pour me saluer", puis retournez livrer les marchandises.

Comme le POST nécessite deux étapes et prend un peu plus de temps, il semble que GET soit plus efficace que POST. Par conséquent, l'équipe Yahoo recommande de remplacer POST par GET pour optimiser les performances du site Web. Mais c'est un piège ! Entrez avec prudence. Pourquoi?

1. GET et POST ont leur propre sémantique et ne peuvent pas être mélangés avec désinvolture.

2. Selon les recherches, lorsque l'environnement réseau est bon, la différence entre l'heure d'envoi d'un colis et l'heure d'envoi de deux colis peut être fondamentalement ignorée. Dans le cas d'un environnement réseau médiocre, TCP avec deux paquets présente de grands avantages pour vérifier l'intégrité des paquets de données.

3. Tous les navigateurs n'enverront pas le package deux fois en POST, Firefox ne l'envoie qu'une seule fois.

Maintenant, lorsque l'intervieweur vous demande « la différence entre GET et POST », est-ce ce que vous ressentez dans votre cœur ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn