Cette question ne porte pas sur le moment où il faut utiliser GET ou POST en général ; il s'agit de savoir quelle est la solution recommandée pour gérer la déconnexion d'une application web. J'ai trouvé beaucoup d'informations sur les différences entre GET et POST au sens général, mais je n'ai pas trouvé de réponse précise pour ce scénario particulier.
En tant que pragmatique, je suis enclin à utiliser GET, car sa mise en œuvre est beaucoup plus simple que POST ; il suffit de déposer un simple lien et le tour est joué. Cela semble être le cas pour la grande majorité des sites web auxquels je pense, du moins pour ce qui me vient à l'esprit. Même Stack Overflow gère la déconnexion avec GET.
Ce qui me fait hésiter, c'est l'argument (certes ancien) selon lequel certains accélérateurs/proxies web pré-cachent les pages en allant récupérer tous les liens qu'ils trouvent dans la page, afin que l'utilisateur obtienne une réponse plus rapide lorsqu'il clique dessus. Je ne sais pas si c'est toujours d'actualité, mais si c'était le cas, alors en théorie un utilisateur avec un de ces accélérateurs serait expulsé de l'application dès qu'il se connecterait, parce que son accélérateur trouverait et récupérerait le lien de déconnexion même s'il n'a jamais cliqué dessus.
Tout ce que j'ai lu jusqu'à présent suggère que POST doit être utilisé pour les "actions destructives", tandis que les actions qui ne modifient pas l'état interne de l'application - comme les requêtes et autres - doivent être traitées avec GET. . Sur cette base, la vraie question est la suivante :
La déconnexion d'une application est-elle considérée comme une action destructive / modifie-t-elle l'état interne de l'application ?
0 votes
En supposant que vous visitez le site pour la première fois et que le lien de déconnexion n'est pas présent, vous serez déconnecté lors de votre connexion. Tout irait bien si vous vous connectiez une deuxième fois, puisque l'URL de déconnexion est déjà en mémoire cache. Mais on peut supposer que tout accélérateur décent serait capable de filtrer la plupart des url de déconnexion.
2 votes
HyperCas, les accélérateurs filtrant les URL de déconnexion était une théorie que j'envisageais et l'une des raisons pour lesquelles j'ai décidé de poster la question. Je suis un peu réticent à l'idée de faire confiance à la logique des accélérateurs et de voir un jour un utilisateur équipé d'un accélérateur de mauvaise qualité se plaindre qu'il ne peut pas se connecter. Savez-vous s'ils suivent une norme, ou si une telle norme existe ?
0 votes
Tout accélérateur qui soumet automatiquement un formulaire (par exemple) serait un malware IMO... il est totalement illogique de penser qu'un accélérateur soumettrait un formulaire automatiquement. Imaginez que vous visitez Google. Comment pourrait-il soumettre le formulaire de recherche ? Personne ne peut rendre compte des malwares car ils sont trop imprévisibles et ne suivent pas les règles.
3 votes
@AlexW - Je pense que vous avez mal compris ma question. Le scénario de l'accélérateur que j'ai proposé a pour but de montrer un problème possible lorsque l'on utilise GET, et non POST. Il n'y aurait donc pas de formulaire à poster, seulement des liens simples que les accélérateurs n'auraient aucun problème à suivre.
0 votes
C'est juste. Je suggérerais alors de vérifier le User-Agent de la requête GET et de s'assurer qu'il s'agit du navigateur et non d'un autre logiciel. Si ce n'est pas User-Agent, alors une propriété équivalente dans l'objet EventHandler.
2 votes
Je réalise que j'arrive des années trop tard pour cela, mais Alex, ce n'est pas ce que Daniel demande. Il dit que si un utilisateur clique sur un lien de déconnexion et qu'un accélérateur renvoie la page de déconnexion en cache sans que l'application ne soit touchée, l'utilisateur restera connecté. Cela n'a rien à voir avec les logiciels malveillants, même si la vérification de la chaîne User-Agent ne résout rien de toute façon.
0 votes
Pourquoi Google accepte-t-il la demande GET pour se déconnecter ?