83 votes

GET vs POST à Ajax

Quelle est la différence entre GET et POST pour les requêtes Ajax ?

Je ne vois aucune différence entre ces deux-là, sauf que lorsque j'utilise GET , les paramètres sont envoyés dans une URL, ce qui pour moi n'a pas vraiment d'importance, car toutes les demandes sont effectuées en arrière-plan et l'utilisateur ne trouve aucune différence.

edit: A quoi servent les méthodes PUT et DELETE ?

140voto

crb Points 4631

OBTENIR est conçu pour récupérer des données à partir du serveur. POST (et moins connus amis PUT et DELETE) sont conçus pour la modification des données sur le serveur.

Une demande ne doit jamais entraîner des données supprimées à partir d'une application. Si vous avez un lien, vous pouvez cliquer sur avec un GET pour supprimer des données, Google recherche de votre site peut cliquer sur tous vos "Supprimer" des liens.

La réponse canonique peut être trouvé ici, qui cite le HTML 2.0 spec:

Si le traitement d'un formulaire est idempotent (c'est à dire qu'il n'a pas de durée effet observable sur l'état de la monde), puis la méthode du formulaire doit être OBTENIR. De nombreuses recherches de base de données ont pas de visible effets secondaires et de faire de idéal les demandes de formulaires de requêtes.

Si le service associé à la transformation d'une forme a des effets secondaires (par exemple, la modification d'un la base de données ou d'un abonnement à un service), la méthode POST.

Dans votre appel AJAX, vous devez utiliser quelle que soit la méthode de votre serveur prend en charge. Vous devez toujours de la conception de votre serveur, de sorte que les opérations qui modifient les données sont appelés par POST/PUT/DELETE. D'autres commentaires ont des liens de REPOS, ce qui correspond généralement C/R/U/D pour POST ou PUT/GET/PUT/DELETE.

28voto

Ryan Smith Points 4067

Si vous êtes à l'envoi de grandes quantités de données, ou des données sensibles via le protocole HTTPS, vous voudrez utiliser un POST. Si c'est juste un simple paramètre, je voudrais utiliser OBTENIR.

Des demandes ont une limite à la quantité de données qui peuvent être envoyés. J'ai oublié le nombre exact, mais cela peut entraîner des problèmes si vous essayez d'envoyer quoi que ce soit.

En gros la différence entre GET et POST, c'est que dans une requête GET, les paramètres sont passés dans l'URL où, comme dans un POST, les paramètres sont inclus dans le corps du message.

19voto

Brian Points 3889

Que ce soit AJAX ou non est sans importance. C'est à propos de l'action que vous prenez. Je recommanderais de suivre les principes de REST . Qui ont des dispositions supplémentaires pour la mise à jour, la suppression, etc ...

4voto

Sergey Points 1943

Les requêtes GET sont plus faciles à exploiter dans les attaques CSRF (falsification de requêtes entre sites). À savoir que les fausses requêtes POST nécessitent l'activation de Javascript du côté utilisateur, tandis que les fausses requêtes GET sont toujours possibles uniquement avec les balises img, script.

3voto

Don Werve Points 3901

De nombreux serveurs web de limiter la longueur des données qui peuvent être transmises dans le cadre de l'URL, de sorte que la demande peut se rompre d'une manière étrange, qui sont difficiles à déboguer.

Aussi, la plupart des serveurs logiciel enregistre les Url dans les journaux d'accès, donc si vous transmettez des informations confidentielles (comme les mots de passe) dans une requête GET, ce sera en toute probabilité être écrites sur le disque en clair.

À partir d'un RESTE de perspective, les requêtes GET devraient pas avoir d'effets secondaires -- ils ne doivent pas modifier les données. Donc, si vous êtes une ressource par des ID, ce qui a du sens, mais si vous avez commis des modifications à une ressource, vous devriez être en utilisant PUT, POST, ou de mise à JOUR pour le verbe http.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X