那么我们为什么要使用POST而不是GET来发布数据呢?

cwa*_*wap 3 post http

可能的重复:
如何在HTML表单中选择GET和POST方法?
你什么时候使用POST,什么时候使用GET?

显然,你应该.但除了这样做以实现HTTP协议之外,还有什么理由这样做吗?开销减少了?某种安全的东西?

lev*_*lex 15

因为GET不能按定义改变服务器的状态.

请参阅RFC2616 9.1.1安全方法:

9.1.1安全方法

实施者应该意识到软件代表用户在互联网上的交互,并且应该小心地让用户知道他们可能采取的任何可能对他们自己或他人有意想不到的意义的行为.

特别是,已经建立了这样的惯例:GET和HEAD方法不应该具有采取除检索之外的动作的重要性.这些方法应该被认为是"安全的".这允许用户代理以特殊方式表示其他方法,例如POST,PUT和DELETE,以便使用户意识到正在请求可能不安全的操作.

如果您使用GET来改变服务器的状态,那么搜索引擎机器人或网络浏览器中的某个链接预取扩展程序可能会对您的网站造成严重破坏,并且(例如)仅通过链接到您的网站来删除所有用户数据.

  • 不是,不是.无能力意味着重复相同的请求不会改变结果.PUT和DELETE也是幂等的(但不安全) (4认同)
  • 幂等是你正在寻找的词 - http://en.wikipedia.org/wiki/Idempotence (3认同)

Joe*_*oey 8

W3C有一篇很好的论文:URI,可寻址性以及HTTP GET和POST的使用.

1.3选择HTTP GET或POST的快速核对表

  • 使用GET如果:
    • 交互更像是一个问题(即,它是一个安全的操作,如查询,读取操作或查找).
  • 使用POST如果:
    • 交互更像是一个订单,或者
    • 交互以用户将感知的方式(例如,对服务的订阅)改变资源的状态,或
    • 用户要对交互结果负责


Tom*_*ier 6

因为,如果你使用GET改变状态,谷歌可以删除你的东西.