GET和POST ajax请求:何时以及如何使用它们?

23

在创建ajax请求时,GET和POST之间的优缺点分别是什么?我如何知道在任何给定时间应该使用哪种方法?这是否是一个安全方面的决定?

此外,它们发送的方式有什么区别?


1
可能是重复问题:https://dev59.com/vHRB5IYBdhLWcg3wHkPi - trante
可能是GET与POST在Ajax中的区别的重复问题。 - gnat
4个回答

25

GET应该用于幂等操作,即可以安全地重复多次而不更改任何内容的操作。浏览器将缓存GET请求(用于普通和AJAX请求)。

通常应该使用POST进行非幂等操作,如保存某些内容。尽管您也可以将其用于其他操作。

GET的数据通过URL查询字符串发送。POST的数据是单独发送的。一些浏览器有最大的URL长度(我认为Internet Explorer是2048个字符),如果查询字符串过长,则会出现错误。


22

在 AJAX 调用中,您应该像在普通调用中一样使用 GET 和 POST 请求。 基本的经验法则是:

请求是否会修改您的模型内容?

  • 是: 该请求将修改(添加/更新/删除)数据存储中的数据, 或以某种其他方式改变服务器状态(例如导致文件创建)。请使用POST。
  • 否: 该请求不会影响服务器上任何东西(数据库、文件系统、 会话等...),而仅仅是检索信息。请使用GET。

18

POST请求是您不希望意外发生的请求。GET请求是通过URL指向浏览器的用户可以接受的请求。

由于GET请求的数据基于URL本身,因此可以很容易地重复这些请求。

您应该像处理常规表单请求(以及它们的GET和POST)一样考虑AJAX请求。


为了安全起见,如果这些页面通常不是用于导航的页面,我应该选择POST方法? - johnnietheblack
2
特别是那些删除东西的事情。 - Ólafur Waage

3
雅虎邮箱团队发现,在使用XMLHttpRequest时,POST在浏览器中实现为两步过程:先发送头部,然后再发送数据。因此最好使用GET,它只需要一个TCP包来发送(除非你有很多cookies)。在IE中URL的最大长度是2K,所以如果你发送超过2K的数据,则可能无法使用GET。
参考链接:http://developer.yahoo.com/performance/rules.html#ajax_get

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接