当前位置:  开发笔记 > 运维 > 正文

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

如何解决《那么我们为什么要使用POST而不是GET来发布数据呢?》经验,为你挑选了3个好方法。

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

请参阅RFC2616 9.1.1安全方法:

9.1.1安全方法

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

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

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



1> levinalex..:

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

请参阅RFC2616 9.1.1安全方法:

9.1.1安全方法

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

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

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


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

2> Joey..:

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

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

使用GET如果:

交互更像是一个问题(即,它是一个安全的操作,如查询,读取操作或查找).

使用POST如果:

交互更像是一个订单,或者

交互以用户将感知的方式(例如,对服务的订阅)改变资源的状态,或

用户要对交互结果负责



3> Tommy Carlie..:

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

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有