因为GET不能按定义改变服务器的状态.
请参阅RFC2616 9.1.1安全方法:
9.1.1安全方法
实施者应该意识到软件代表用户在互联网上的交互,并且应该小心地让用户知道他们可能采取的任何可能对他们自己或他人有意想不到的意义的行为.
特别是,已经建立了这样的惯例:GET和HEAD方法不应该具有采取除检索之外的动作的重要性.这些方法应该被认为是"安全的".这允许用户代理以特殊方式表示其他方法,例如POST,PUT和DELETE,以便使用户意识到正在请求可能不安全的操作.
如果您使用GET来改变服务器的状态,那么搜索引擎机器人或网络浏览器中的某个链接预取扩展程序可能会对您的网站造成严重破坏,并且(例如)仅通过链接到您的网站来删除所有用户数据.
因为GET不能按定义改变服务器的状态.
请参阅RFC2616 9.1.1安全方法:
9.1.1安全方法
实施者应该意识到软件代表用户在互联网上的交互,并且应该小心地让用户知道他们可能采取的任何可能对他们自己或他人有意想不到的意义的行为.
特别是,已经建立了这样的惯例:GET和HEAD方法不应该具有采取除检索之外的动作的重要性.这些方法应该被认为是"安全的".这允许用户代理以特殊方式表示其他方法,例如POST,PUT和DELETE,以便使用户意识到正在请求可能不安全的操作.
如果您使用GET来改变服务器的状态,那么搜索引擎机器人或网络浏览器中的某个链接预取扩展程序可能会对您的网站造成严重破坏,并且(例如)仅通过链接到您的网站来删除所有用户数据.
W3C有一篇很好的论文:URI,可寻址性以及HTTP GET和POST的使用.
1.3选择HTTP GET或POST的快速核对表
使用GET如果:
交互更像是一个问题(即,它是一个安全的操作,如查询,读取操作或查找).
使用POST如果:
交互更像是一个订单,或者
交互以用户将感知的方式(例如,对服务的订阅)改变资源的状态,或
用户要对交互结果负责
因为,如果你使用GET改变状态,谷歌可以删除你的东西.