7
votes

Alors, pourquoi devrions-nous utiliser Post au lieu d'obtenir des données d'affichage?

DUPLICATES possibles:

Comment puis-je choisir entre obtenir et poster Méthodes dans les formes HTML?
Quand utilisez-vous POST et quand utilisez-vous? Obtenez-vous?

Évidemment, vous devriez. Mais en dehors de le faire pour remplir le protocole HTTP, y a-t-il des raisons de le faire? Moins de ressource? Une sorte de sécurité?


1 commentaires

Est-ce que quelqu'un veuillez créer un lien vers le prétendu DUP?


8 Réponses :


0
votes

Obtenir est limité par la longueur de l'URL, le navigateur / serveur peut gérer. Cela était aussi court que 256 caractères.


3 commentaires

Il n'y a pas de limite de ce type dans la spécification HTTP. En pratique, les limites sont supérieures à 256 caractères.


2000 caractères devraient être considérés comme la limite pratique actuelle. Voir Stackoverflow.com / Questions / 417142 / ...


"Avait l'habitude d'être". J'ai regardé Post VS Revenez en 1997 et la raison pour laquelle je donne ici était ce que j'ai trouvé alors.



2
votes

Si vous acceptez d'accomplir des opérations d'écriture, un pirate informatique malveillant pourrait injecter des liens quelque part pour effectuer une opération non autorisée. Votre utilisateur clique sur un lien - et quelque chose est supprimé d'une base de données. Ou peut-être une certaine somme d'argent est également transférée du compte de l'utilisateur s'il est toujours connecté à leur banque en ligne.

http://superbank.com/transfermoney?amount=1000&recipient=2342524

Envoyez un email malveillant avec une image intégrée faisant référence à ce lien et dès que le document est ouvert, quelque chose de drôle est arrivé dans les coulisses.


4 commentaires

Bien que cela soit correct, il ne serait pas beaucoup plus difficile pour un pirate hachueur à moitié compétent pour vous lancer à la place d'une demande de post malveillante.


Mais ce serait un tour, qui peut être contré, tandis que l'image-get est une opération parfaitement légale


@YMV: Oui, mais vous acceptez une commande Obtenir un lien pour mettre à jour vos affaires serait stupide.


@Lukeh Comment un utilisateur peut-il être trompé pour effectuer une demande de poste malveillante? S'il vous plaît donner un exemple.



19
votes

car obtenir ne doit pas modifier l'état du serveur par définition.

voir RFC2616 9.1.1 Méthodes sûres :

9.1.1 Méthodes sûres

Les impléments doivent savoir que le logiciel représente l'utilisateur dans leur interactions sur Internet, et devrait être prudent de permettre à l'utilisateur de être conscient de toutes les actions qu'ils pourraient prendre ce qui peut avoir un imprévu signification pour eux-mêmes ou d'autres.

En particulier, la convention a été établi que l'obtention et la tête les méthodes ne doivent pas avoir le signification de prendre une action autre que la récupération. Ces méthodes doivent être considéré comme "sûr". Cela permet à l'utilisateur agents pour représenter d'autres méthodes, comme post, mettre et supprimer, dans un manière spéciale, de sorte que l'utilisateur soit fait conscient du fait que pourrait éventuellement Une action dangereuse est demandée.

Si vous utilisez, obtenez-vous pour modifier l'état du serveur, un moteur de recherche de la recherche ou une extension de la préparation de la liaison dans un navigateur Web peut gérer des ravages sur votre site et (par exemple) Supprimez toutes les données utilisateur simplement en suivant des liens sur votre site .


2 commentaires

Idempotent est le mot que vous recherchez - en.wikipedia.org/wiki/idempotence


Non, pas vraiment. Indempotent signifie que répéter la même demande ne change pas le résultat. Mettre et supprimer les shoult aussi être idempotent (mais ne sont pas sûrs)



-5
votes

Lorsque vous utilisez POST, vous pouvez voir les informations «publiées» dans la barre d'adresse du navigateur Web. Ceci est [apparemment] pas le cas lorsque vous utilisez la méthode GET.

Cet article était quelque part sur http://www.w3schools.com/ une fois que j'ai trouvé La page exacte était sur, je republierai. : -)


2 commentaires

Mauvaise façon autour sûrement!


Désolé gars, qu'est-ce que je pensais !? Je sais que c'est l'inverse, mais je ... ah ... j'ai besoin de dormir




7
votes

Parce que, si vous utilisez d'aller à Alter State, Google peut supprimer votre matériel .


0 commentaires

11
votes

Il y a un joli papier par le W3C à ce sujet: URI, Adressabilité et utilisation de HTTP Get and Post .

1.3 Liste de contrôle rapide pour choisir HTTP Get ou Post

  • utiliser obtenir si:
    • L'interaction ressemble plus à une question (c'est-à-dire une opération sûre, telle qu'une requête, une opération de lecture ou une recherche).
    • Utilisez POST si:
      • L'interaction ressemble plus à une commande, ou
      • L'interaction change l'état de la ressource de manière à percevoir l'utilisateur (par exemple, un abonnement à un service) ou
      • L'utilisateur doit être tenu responsable des résultats de l'interaction

0 commentaires

0
votes

Il y a au moins une situation dans laquelle vous souhaitez obtenir une modification de données sur le serveur. C'est à ce moment-là que GET renvoie des données et vous devez enregistrer les données fournies à un utilisateur et quand elle a été donnée.

Si vous utilisez des types de données complexes, il doit être dans un poste qu'il ne peut pas être dans un get. Par exemple, le test d'un service Web WCF dans un navigateur ne peut être effectué que lorsque le contrat utilise des types de données simples.

Utiliser Get and Post où il est attendu aide à garder votre programme compréhensible.


0 commentaires