什么时候应该在Web应用程序中使用GET而不是POST?

时间:2010-11-19 15:57:00

标签: http post httpwebrequest get

似乎坚持POST是要走的路,因为它会产生干净的网址。 GET似乎会造成长时间混淆的网址。 POST在安全性方面也更好。适用于保护表单中的密码。事实上,我听说许多开发人员只使用POST表单。我也听说许多开发人员从未真正使用GET

那么,如果GET具有这两个优势,那么为什么以及在什么情况下会使用POST

GETPOST有什么好处?

4 个答案:

答案 0 :(得分:5)

你是对的,但是对于搜索页等使用获取可能会更好。您希望URL显而易见且可被发现的位置。如果你查看谷歌(或任何搜索页面),它会在最后放置www.google.com/?q=my+search,以便人们可以直接链接到搜索。

你实际上比你想象的更多地使用GET。只需返回网页即可获得GET请求。还有POST,PUT,DELETE,HEAD,OPTIONS,这些都在RESTful编程接口中使用。

GET与POST对安全性没有任何影响,除非您使用HTTP / SSL,否则它们都是不安全的。

答案 1 :(得分:2)

有时您希望您的Web应用程序可被发现,因为用户可以猜测某个操作的URL应该是什么。它提供了更好的用户体验,为此您将使用GET并将您的URL基于某种RESTful规范,如http://microformats.org/wiki/rest/urls

答案 2 :(得分:1)

Check the manual,我很惊讶没有人指出GET和POST在语义上是不同的,并且用于完全不同的目的。

虽然在很多情况下可能会出现这两种方法之间没有功能差异,但在您测试每个浏览器,代理和服务器组合之前,您将无法依赖每个浏览器,案件。例如移动设备/代理通常会缓存aggressivley,即使它们被请求不会(但我从未遇到过错误地缓存POST响应的那个)。

协议不允许除简单的标量数据类型之外的任何其他内容作为GET中的参数 - 例如你只能使用POST或PUT发送文件。

还有实施限制 - 上次我检查时,MSIE中URL的大小限制在2k左右。

最后,正如您所指出的那样,存在数据可见性问题 - 您可能不希望允许用户为包含其信用卡号/密码的URL添加书签。

  

POST是要走的路,因为它会产生干净的URL

这相当违背了URL的目的。阅读RFC 1630 - 需要通用语法。

答案 3 :(得分:0)

如果“网络应用程序”是指“网站”,作为开发人员,您实际上没有任何选择。作为GET或POST请求的开发人员不是您,而是您的用户。他们通过网络浏览器发出请求。

当您通过在浏览器的地址栏中键入其URL(或单击链接等)来请求网页时,浏览器会发出GET请求。

使用按钮提交网页时,您会发出POST请求。

在GET请求中,在查询字符串中发送其他数据。例如,URL www.mysite.com?user=david&password=fish发送两位数据'user'和'password'。

在POST请求中,将发送表单控件中的值(例如文本框等)。这在地址栏中不可见,但对于查看您网络流量的任何人来说都是完全可见的。

除非使用SSL(例如,以https开头的网址),否则GET和POST都是完全不安全的。