In dieser Frage geht es nicht darum, wann man GET oder POST im Allgemeinen verwenden sollte; Es geht darum, welches die empfohlene Lösung für das Abmelden von einer Webanwendung ist. Ich habe viele Informationen über die Unterschiede zwischen GET und POST im allgemeinen Sinne gefunden, aber ich habe keine eindeutige Antwort für dieses spezielle Szenario gefunden.
Als Pragmatiker neige ich dazu, GET zu verwenden, weil die Implementierung viel einfacher ist als POST; man muss nur einen einfachen Link einfügen, und schon ist man fertig. Dies scheint bei der großen Mehrheit der Websites der Fall zu sein, die mir einfallen, zumindest wenn ich mich recht entsinne. Sogar Stack Overflow loggt sich mit GET aus.
Was mich zögern lässt, ist das (wenn auch alte) Argument, dass einige Web-Beschleuniger/Proxys Seiten vorcachen, indem sie jeden Link, den sie auf der Seite finden, abrufen, so dass der Benutzer eine schnellere Antwort erhält, wenn er darauf klickt. Ich bin mir nicht sicher, ob dies immer noch zutrifft, aber wenn dies der Fall wäre, dann würde theoretisch ein Benutzer mit einem dieser Beschleuniger aus der Anwendung geworfen werden, sobald er sich anmeldet, weil sein Beschleuniger den Abmeldelink finden und abrufen würde, auch wenn er ihn nie angeklickt hat.
Alles, was ich bisher gelesen habe, deutet darauf hin, dass POST sollte für "destruktive Aktionen" verwendet werden, während Aktionen, die den internen Zustand der Anwendung nicht verändern - wie Abfragen und dergleichen - mit GET behandelt werden sollten. . Die eigentliche Frage, die sich hier stellt, ist also:
Gilt das Abmelden von einer Anwendung als destruktive Aktion bzw. wird der interne Zustand der Anwendung verändert?
0 Stimmen
Wenn Sie die Website zum ersten Mal besuchen und der Abmeldelink nicht vorhanden ist, werden Sie beim Anmelden abgemeldet. Wenn Sie sich ein zweites Mal anmelden, ist das kein Problem, da die Abmelde-URL bereits im Cache gespeichert ist. Man kann aber davon ausgehen, dass jeder anständige Beschleuniger in der Lage ist, die meisten Logout-URLs herauszufiltern.
2 Stimmen
HyperCas, das Herausfiltern von Logout-URLs durch Beschleuniger war eine Theorie, die ich in Betracht gezogen habe, und einer der Gründe, warum ich mich entschlossen habe, die Frage zu stellen. Es widerstrebt mir, einfach der Logik der Beschleuniger zu vertrauen und eines Tages eine Benutzerin mit einem schlechten Beschleuniger zu haben, die sich beschwert, dass sie sich nicht anmelden kann. Wissen Sie, ob sie einem Standard folgen, oder ob ein solcher Standard existiert?
0 Stimmen
Jeder Accelerator, der automatisch ein Formular übermittelt (zum Beispiel), wäre IMO Malware... es ist völlig unlogisch zu denken, dass ein Accelerator automatisch ein Formular übermitteln würde. Stellen Sie sich vor, Sie besuchen Google. Wie könnte er das Suchformular übermitteln? Niemand kann für Malware verantwortlich gemacht werden, da sie zu unberechenbar ist und sich nicht an die Regeln hält.
3 Stimmen
@AlexW - Ich glaube, Sie haben meine Frage missverstanden. Das von mir vorgeschlagene Beschleuniger-Szenario soll ein mögliches Problem bei der Verwendung von GET und nicht POST aufzeigen. Es gäbe also kein Formular zum Posten, sondern nur einfache Links, denen die Beschleuniger problemlos folgen könnten.
0 Stimmen
Das stimmt. Ich würde vorschlagen, den User-Agent der GET-Anfrage zu überprüfen und sicherzustellen, dass es sich um den Browser und nicht um eine andere Software handelt. Wenn nicht User-Agent, dann eine entsprechende Eigenschaft im EventHandler-Objekt.
2 Stimmen
Ich weiß, dass ich dafür Jahre zu spät bin, aber Alex, das ist nicht das, wonach Daniel fragt. Er meint, wenn ein Benutzer auf einen Abmeldelink klickt und ein Beschleuniger die zwischengespeicherte Abmeldeseite zurückgibt, ohne dass die Anwendung davon betroffen ist, würde der Benutzer eingeloggt bleiben. Das hat nichts mit Malware zu tun, obwohl das Überprüfen eines User-Agent-Strings sowieso nichts bringen würde.
0 Stimmen
Warum akzeptiert Google eine GET-Anfrage zum Abmelden?