Was ist der Unterschied zwischen GET und POST für Ajax- Anfragen?
Ich sehe keinen Unterschied zwischen diesen beiden, außer dass bei Verwendung von GET die Parameter in einer URL gesendet werden, was für mich keinen wirklichen Unterschied macht, da alle Anfragen im Hintergrund gestellt werden und der Benutzer keine findet Unterschied.
edit: Wofür werden PUT- und DELETE- Methoden verwendet?
Antworten:
GET dient zum Abrufen von Daten vom Server. POST (und weniger bekannte Freunde PUT und DELETE) dienen zum Ändern von Daten auf dem Server.
Eine GET-Anforderung sollte niemals dazu führen, dass Daten aus einer Anwendung entfernt werden. Wenn Sie einen Link haben, auf den Sie mit einem GET klicken können, um Daten zu entfernen, kann Google Spidering Ihrer Website auf alle Ihre "Löschen" -Links klicken.
Die kanonische Antwort finden Sie hier , in der die HTML 2.0-Spezifikation zitiert wird:
In Ihrem AJAX-Aufruf müssen Sie die von Ihrem Server unterstützte Methode verwenden. Sie sollten Ihren Server immer so gestalten, dass Vorgänge, die Daten ändern, von POST / PUT / DELETE aufgerufen werden. Andere Kommentare enthalten Links zu REST, das C / R / U / D im Allgemeinen "POST oder PUT" (Erstellen) / GET (Lesen) / PUT (Aktualisieren) / LÖSCHEN (Löschen) zuordnet.
quelle
Wenn Sie große Datenmengen oder vertrauliche Daten über HTTPS senden, sollten Sie POST verwenden. Wenn es nur ein einfacher Parameter ist, würde ich GET verwenden.
GET-Anforderungen sind auf die Datenmenge begrenzt, die gesendet werden kann. Ich habe die genaue Anzahl vergessen, aber dies kann zu Problemen führen, wenn Sie etwas Wesentliches senden.
Grundsätzlich besteht der Unterschied zwischen GET und POST darin, dass in einer GET-Anforderung die Parameter in der URL übergeben werden, wobei die Parameter wie in einem POST im Nachrichtentext enthalten sind.
quelle
Ob es AJAX ist oder nicht, ist irrelevant. Es geht um die Aktion, die Sie ergreifen. Ich würde empfehlen, den Prinzipien von REST zu folgen . Welche haben weitere Bestimmungen zum Aktualisieren, Löschen, etc ...
quelle
GET-Anforderungen lassen sich bei CSRF-Angriffen (Cross Site Request Forgery) leichter ausnutzen. Für gefälschte POST-Anforderungen muss Javascript auf der Benutzerseite aktiviert sein, während gefälschte GET-Anforderungen nur mit img-Skript-Tags möglich sind.
quelle
Viele Webserver begrenzen die Länge der Daten, die als Teil der URL übergeben werden können, sodass die GET-Anforderung auf seltsame Weise unterbrochen werden kann, die schwer zu debuggen sind.
Außerdem protokolliert die meiste Serversoftware URLs in den Zugriffsprotokollen. Wenn Sie also vertrauliche Informationen (z. B. Kennwörter) in einer GET-Anforderung übergeben, werden diese höchstwahrscheinlich im Klartext auf die Festplatte geschrieben.
Aus REST-Sicht sollten GET-Anforderungen keine Nebenwirkungen haben - sie sollten keine Daten ändern. Wenn Sie also nur eine Ressource anhand der ID abrufen, ist dies sinnvoll. Wenn Sie jedoch Änderungen an einer Ressource vornehmen, sollten Sie PUT, POST oder UPDATE für das http-Verb verwenden.
quelle
Beide werden verwendet, um einige Daten zu senden und eine Antwort mit diesen Daten zu empfangen.
GET: Informationsspeicher auf dem Server abrufen. Dh. Suche, Tweet, Personeninformationen. Wenn Sie Informationen senden möchten, erhalten Sie eine Anfrage zum Senden einer Anfrage mit process.php? Name = subroto. Im Grunde werden Informationen über die URL gesendet. URL kann nicht mehr als 2083 Zeichen verarbeiten. Kannst du dich daran erinnern, dass es für einen Blog-Beitrag nicht möglich ist?
POST: Post mache das Gleiche wie get. Benutzerregistrierung, Benutzeranmeldung, Big Data senden, Blogpost. Wenn Sie sichere Informationen senden müssen, verwenden Sie Post oder Big Data, da diese nicht über die URL gesendet werden.
AJAX: $ .get () und $ .post () enthalten Funktionen, die Teilmengen von $ .ajax () sind. Es hat viel Konfiguration.
$ .get () -Methode, eine Art Abkürzung für $ .Ajax (). Wenn Sie $ .get () verwenden, übergeben Sie anstelle der Übergabe eines Objekts Argumente. Sie benötigen mindestens die ersten beiden Argumente, nämlich die URL der abzurufenden Datei (z. B. 'test.txt') und einen erfolgreichen Rückruf.
Zusammenfassung:
$.get( url [, data ] [, success ] [, dataType ] ) $.post( url [, data ] [, success ] [, dataType ] ) // for sending secure or Large information $.ajax( url [, settings ] ) // More Configaration
quelle
Erstens allgemeine Informationen. Verwenden
GET
Sie diesePOST
Option, wenn Sie nur Daten lesen. Verwenden Sie diese Option , wenn Sie Änderungen an Datenbanken, TXT-Dateien usw. vornehmen.Das Problem ist jedoch, dass einige Browser die
GET
Ergebnisse zwischenspeichern. Ich hatte Probleme mitAJAX
Anfragen in IE7, aber schließlich fand ich heraus, dass der Browser dieGET
Ergebnisse zwischenspeichert. Ich überlegte den Fluss und änderte meine Anfrage inPOST
.Verwenden
GET
Sie es also nicht, wenn Sie kein Caching wünschen.(Natürlich können Sie das Caching in GET-Operationen deaktivieren. Aber ich habe es nicht bevorzugt.)
quelle
Über mich bevorzuge ich POST. Ich behalte mir vor, zu den Ereignissen zu gelangen, von denen ich weiß, dass der gesendete Wert auf Daten beschränkt ist, für die ich die "Kontrolle" habe, um beispielsweise einen Artikel mit einer ID abzurufen. Beispiel: "getitem? Id = 123", "deleteImtem? Id = 123", ... Für die anderen Fälle, in denen ein Formular von einem Benutzer ausgefüllt werden kann, bevorzuge ich POST.
Wie Ryan Smith gesagt hat, ist es besser, POST zu verwenden, um eine große Datenmenge zu senden, und weniger Sorgen bei der Verwendung in anderen Sprachen / Sonderzeichen (im Allgemeinen sollten alle Javascript-Frameworks der Majors keine Probleme haben, damit umzugehen, aber Ich denke, es macht weniger Sorgen, POST zu verwenden.
Für die REST-Perspektive können Sie dies meiner Meinung nach mit einem neuen Projekt verwenden (um die Konsistenz mit dem gesamten Projekt zu gewährleisten).
Schließlich können möglicherweise einige Programme, die in einem Netzwerk verwendet werden (URL-Protokollierer (z. B. um zu sehen, ob die Mitarbeiter ihre Zeit auf nicht autorisierten Websites verloren haben, ...), Proxys, ...) oder andere Tools die Abfrage abfangen . Einige zeigen in den Berichten die Parameter, die Sie mit GET gesendet haben, und betrachten dies als eine andere Webseite. Aber in dieser Situation könnte es nicht Ihr Problem sein, dass es von einem Projekt zu einem anderen wechselt! ;)
quelle
Der Unterschied ist der gleiche zwischen
GET
undPOST
ob Sie Ajax, HTMLform
s oder verwendencurl
. Hier sind die relevanten Definitionen:quelle
Wenn Sie Argumente mit Zeichen weitergeben, die in der URL durcheinander geraten können (z. B. Leerzeichen), verwenden Sie POST. Andernfalls können Sie GET verwenden.
Wenn Sie nur ein paar winzige Argumente weitergeben, würden Sie im Allgemeinen GET verwenden. Für die Weitergabe von vom Benutzer eingereichten Informationen wie Blogeinträgen, Text usw. empfiehlt es sich jedoch, POST zu verwenden.
Es gibt auch bestimmte Frameworks, die vollständig auf segmentbasierten URLs basieren (z. B.
site.com/products/133
und nicht,site.com/products.php?id=333
und diese Frameworks deaktivieren die GET-Variablen aus Sicherheitsgründen. In solchen Fällen würden Sie POST die ganze Zeit verwenden.quelle