2009-09-03 5 views
21

Quelles sont les forces de GET sur POST et vice versa lors de la création d'une requête ajax? Comment savoir ce que je devrais utiliser à un moment donné? Est-ce une décision sécuritaire?GET par rapport aux requêtes POST ajax: quand et comment utiliser?

En outre, quelle est la différence dans la façon dont ils sont réellement envoyés?

+0

double possible: http://stackoverflow.com/questions/715335/get-vs-post-in-ajax – trante

Répondre

17

Les requêtes POST sont des demandes que vous ne souhaitez pas rencontrer accidentellement. Les requêtes GET sont des requêtes que vous êtes en train d'exécuter lorsqu'un utilisateur pointe un navigateur vers une URL.

Les requêtes GET peuvent être répétées simplement car leurs données sont basées sur l'URL elle-même.

Vous devriez penser à des requêtes AJAX comme vous pensez au sujet des demandes de forme régulière (et leur GET et POST)

+0

afin d'être sûr, si les pages ne coûtent généralement des pages destinées à être navigué, et Je devrais juste choisir POST? – johnnietheblack

+2

Avec des choses qui suppriment en particulier. –

24

SE FAIT doit être utilisé pour idempotent opérations, qui est des opérations qui peuvent être en toute sécurité répété plus d'une fois sans changer quoi que ce soit . Les navigateurs mettent en cache les requêtes GET (pour les requêtes normales et AJAX)

Les POST doivent généralement être utilisés pour des opérations non idenpotentes, comme la sauvegarde d'un élément. Bien que vous puissiez les utiliser pour d'autres opérations si vous le souhaitez.

Les données pour GETs sont envoyées via la chaîne de requête d'URL. Les données pour les POST sont envoyées séparément. Certains navigateurs ont une longueur d'URL maximale (je pense qu'Internet Explorer a 2048 caractères), et si la chaîne de requête devient trop longue, vous obtiendrez une erreur.

22

Vous devez utiliser les requêtes GET et POST dans les appels AJAX, tout comme vous utiliseriez les requêtes GET et POST dans les appels normaux. Règle de base:

Est-ce que la requête va modifier quelque chose dans votre Modèle?

  • OUI: La demande modifiera (ajout/mise à jour/supprimer) les données de votre magasin de données, ou d'une autre manière de changer l'état du serveur (cause la création de un fichier, par exemple). Utilisez POST.
  • NO: La demande n'affecte pas l'état de quoi que ce soit (base de données, système de fichiers, sessions , ...) sur le serveur, mais simplement récupérer des informations. Utilisez GET.
3

Le Yahoo! L'équipe de messagerie a constaté que lors de l'utilisation de XMLHttpRequest, POST est implémenté dans les navigateurs en deux étapes: l'envoi des en-têtes en premier, puis l'envoi des données. Il est donc préférable d'utiliser GET, qui ne prend qu'un seul paquet TCP à envoyer (sauf si vous avez beaucoup de cookies). La longueur d'URL maximale dans Internet Explorer est de 2 Ko. Si vous envoyez plus de 2 Ko de données, vous ne pourrez peut-être pas utiliser GET.

http://developer.yahoo.com/performance/rules.html#ajax_get

Questions connexes