我知道HTTP get和post方法之间的区别(在this问题的详细信息中已经过期)。
我的问题是为什么不总是使用post方法进行AJAX调用,这是安全的。是否有更快的请求?是否有理由选择获得然后发布?
对于没有ajax调用有一个原因 - 共享一个链接到同一个url,但对于AJAX这个论点它不好......
答案 0 :(得分:10)
GET请求更小更快;并在客户端和可能正在发挥作用的任何代理方面利用缓存。
对于预计不会经常变化的数据,GET请求通常非常明智,因为除非必要,否则他们更有可能不被重新发送。
对于预计会更频繁更改的数据,POST确实是更安全的选项,因为它将始终重新发送到服务器,确保始终遵守更改。
还有一些语义问题可以发挥作用。只有在意图修改服务器上的数据时才应该使用POST请求。
答案 1 :(得分:7)
我正在阅读雅虎有关加速您的网站的最佳做法,他们已经很好地解释了为什么我们应该更喜欢过帖,这里是帖子摘要供您参考
使用XMLHttpRequest,POST在浏览器中实现为两步过程:首先发送标头,然后发送数据。因此最好使用GET,它只需要一个TCP数据包发送(除非你有很多cookie)。 IE中的最大URL长度为2K,因此如果您发送的数据超过2K,则可能无法使用GET。
一个有趣的副作用是没有实际发布任何数据的POST就像GET一样。根据HTTP规范,GET用于检索信息,因此当您仅请求数据时,使用GET是有意义的(语义上),而不是将数据发送到服务器端存储。
详情请参阅页面
答案 2 :(得分:5)
我的问题是为什么不总是使用post方法进行AJAX调用
因为在RESTful应用程序中,将POST动词用于不修改服务器状态的操作是没有意义的。在RESTful应用程序中,请求的方式并不重要:它是普通的,AJAX还是机器人。
GET请求通常也更快,并且由浏览器缓存。
答案 3 :(得分:2)
GET使用单个请求到服务器而不是两个用于POST。
根据雅虎的YSlow团队,当传输的内容低于IE的2K限制时,您应该选择GET。在此处阅读更多内容:http://developer.yahoo.com/performance/rules.html#ajax_get