据我所知,有三种类型:
不要使用GET和POST 不要使用POST而使用GET 你用哪一个都不重要。
我对这三种情况的假设正确吗?如果有,每个案例都有哪些例子?
据我所知,有三种类型:
不要使用GET和POST 不要使用POST而使用GET 你用哪一个都不重要。
我对这三种情况的假设正确吗?如果有,每个案例都有哪些例子?
当前回答
正如其他人回答的那样,get对url大小有限制,文件只能通过post提交。
我想补充的是,一个人可以添加东西到一个数据库的get和执行操作与发布。当脚本接收到post或get命令时,它可以执行作者希望它执行的任何操作。我相信缺乏理解来自于这本书选择的措辞或你的阅读方式。
脚本作者应该使用posts来更改数据库,而只使用get来检索信息。
脚本语言提供了许多访问请求的方法。例如,PHP允许使用$_REQUEST来检索post或get。应该避免使用更具体的$_GET或$_POST。
在web编程中,有更多的解释空间。一个人应该做什么,可以做什么,但哪一个更好往往是有争议的。幸运的是,在这种情况下,没有歧义。您应该使用posts来更改数据,并且应该使用get来检索信息。
其他回答
使用POST进行破坏性操作,例如创建(我知道这很讽刺)、编辑和删除,因为您不能在浏览器的地址栏中点击POST操作。当允许一个人调用一个动作是安全的时候使用GET。URL是这样的:
http://myblog.org/admin/posts/delete/357
应该带你到一个确认页面,而不是简单地删除项目。这样避免事故要容易得多。
POST也比GET更安全,因为您没有将信息粘贴到URL中。因此,使用GET作为收集密码或其他敏感信息的HTML表单的方法并不是最好的主意。
最后一点注意:POST可以比GET传输更多的信息。“POST”没有传输数据的大小限制,而“GET”限制为2048个字符。
在短暂的
使用GET来获得安全的和无效的请求 对于既不安全也不幂等的请求使用POST
在细节 每个人都有一个合适的位置。即使您不遵循RESTful原则,通过学习REST以及面向资源的方法是如何工作的,也可以获得很多东西。
RESTful应用程序将对安全且幂等的操作使用get。
安全操作是不改变请求数据的操作。
幂等运算是一种无论你请求多少次结果都相同的运算。
有理由认为,由于get用于安全操作,它们自动也是幂等的。通常,GET用于检索资源(例如,堆栈溢出时的问题及其相关答案)或资源集合。
RESTful应用程序将使用put进行不安全但幂等的操作。
我知道这个问题是关于GET和POST的,但是我马上回到POST。
通常,PUT用于编辑资源(例如,在堆栈溢出上编辑问题或答案)。
POST可以用于任何既不安全也不幂等的操作。
通常,POST将用于创建一个新资源,例如创建一个new SO问题(尽管在某些设计中,PUT也会用于此)。
如果你运行POST两次,你最终会创建两个新的问题。
还有一个DELETE操作,但我猜我可以把它留在那里:)
讨论
实际上,现代网络浏览器通常只可靠地支持GET和POST(你可以通过javascript调用来执行所有这些操作,但是在表单中输入数据和按提交,你通常有两个选项)。在RESTful应用程序中,POST通常也会被覆盖以提供PUT和DELETE调用。
但是,即使您没有遵循RESTful原则,也可以考虑使用GET来检索/查看信息,使用POST来创建/编辑信息。
永远不要对改变数据的操作使用GET。如果搜索引擎抓取到你邪恶行动的链接,或者客户书签,这可能会带来大麻烦。
除了许多浏览器的长度限制不同之外,还有语义上的差异。get应该是“安全的”,因为它们是只读操作,不会改变服务器状态。post通常会改变状态,并在重新提交时给出警告。搜索引擎的网络爬虫可能会生成get,但不应该生成post。
如果希望读取数据而不改变状态,则使用GET;如果希望更新服务器上的状态,则使用POST。
HTTP Post数据对数据量没有指定的限制,因为不同的浏览器对GET有不同的限制。RFC 2068声明:
服务器应谨慎 取决于URI长度大于255 字节,因为一些旧的客户端或 代理实现可能不正确 支持这些长度
具体来说,您应该根据它们的用途选择正确的HTTP结构。HTTP GET不应该有副作用,可以被HTTP代理等安全地刷新和存储。
当您想要针对url资源提交数据时,使用HTTP POST。
使用HTTP GET的一个典型示例是在搜索中,即搜索?查询=我+查询 使用HTTP POST的一个典型示例是向在线表单提交反馈。
阅读维基百科上关于HTTP的文章。它将解释协议是什么以及它的作用:
得到 请求指定资源的表示形式。请注意,GET不应该用于导致副作用的操作,例如在web应用程序中使用它来执行操作。其中一个原因是,GET可以被机器人或爬虫任意使用,它们不需要考虑请求应该引起的副作用。
and
帖子 向已识别的资源提交要处理的数据(例如,来自HTML表单)。数据包含在请求体中。这可能导致创建新资源或更新现有资源,或者两者都有。
W3C有一个名为uri、Addressability的文档,以及HTTP GET和POST的使用,它解释了什么时候使用什么。引用
1.3 HTTP GET / POST选择快速检查 在以下情况下使用GET: 这种互动更像是一个问题(也就是说,它是一个问题) 安全操作,如查询、读取操作或查找)。
and
在以下情况下使用POST: 这种互动更像是一种命令,或者 交互以用户可以感知的方式改变资源的状态(例如,对服务的订阅),或者 o用户对互动的结果负责。 但是,在最终决定使用HTTP GET还是POST之前,还请考虑敏感数据和实际考虑因素。
一个实际的例子是每当您提交HTML表单时。您可以为表单操作指定post或get。PHP将相应地填充$_GET和$_POST。