Jquery 为什么不总是在ajax调用中使用HTTPPOST?

Jquery 为什么不总是在ajax调用中使用HTTPPOST?,jquery,asp.net,html,post,Jquery,Asp.net,Html,Post,我知道HTTP get和post方法之间的区别(在讨论中详细阐述了这一点)。 我的问题是为什么不总是对AJAX调用使用post方法,这是安全的。是否有更快的请求?有没有理由选择先发后发 对于none ajax调用,有一个理由——共享指向同一url的链接,但对于ajax来说,这个参数不好…GET请求更小更快;并在客户端和可能使用的任何代理上利用缓存 对于预期不会经常更改的数据,GET请求通常非常合理,因为除非必要,否则它们更有可能不被重新发送 但是,对于预期会更频繁更改的数据,POST确实是更安全

我知道HTTP get和post方法之间的区别(在讨论中详细阐述了这一点)。
我的问题是为什么不总是对AJAX调用使用post方法,这是安全的。是否有更快的请求?有没有理由选择先发后发


对于none ajax调用,有一个理由——共享指向同一url的链接,但对于ajax来说,这个参数不好…

GET请求更小更快;并在客户端和可能使用的任何代理上利用缓存

对于预期不会经常更改的数据,GET请求通常非常合理,因为除非必要,否则它们更有可能不被重新发送

但是,对于预期会更频繁更改的数据,POST确实是更安全的选择,因为它将始终重新发送给服务器,确保始终尊重更改

还有一些语义问题也在起作用。POST请求实际上只应在意图修改服务器上的数据时使用

我的问题是为什么不总是对AJAX调用使用post方法

因为在RESTful应用程序中,对于不修改服务器状态的操作,使用POST谓词是没有意义的。在RESTful应用程序中,请求是如何发出的并不重要:它是普通的、AJAX还是机器人


另外,GET请求通常更快,并且由浏览器缓存。

GET使用一个到服务器的请求,而POST使用两个


根据雅虎的YSlow团队的说法,当传输的内容少于IE的2K限制时,你应该选择GET。阅读更多内容:

前几天,我正在阅读雅虎加速网站的最佳实践,他们已经很好地解释了为什么我们更喜欢跳过帖子,这里是帖子片段供您参考

使用XMLHttpRequest,POST在浏览器中实现为两个步骤:首先发送头,然后发送数据。所以最好使用GET,它只需要发送一个TCP数据包(除非您有很多cookie)。IE中的最大URL长度为2K,因此如果发送的数据超过2K,则可能无法使用GET

一个有趣的副作用是,在没有实际发布任何数据的情况下,POST的行为与GET类似。基于HTTP规范,GET是用来检索信息的,因此当您只请求数据时使用GET(从语义上讲)是有意义的,而不是发送数据存储在服务器端

有关详细信息,请参阅第页


是什么给你的印象是一篇文章由两个请求组成?@Gareth,也许是他提供的链接…?@gdoron TCP数据包与HTTP请求不同。任何类型的请求都可以拆分为多个TCP数据包,而大多数(并非所有)浏览器都可以处理AJAX POST。让我们明确一点,计算TCP数据包充其量只是一种微优化,而微优化很少能很好地回答关于你是否应该“总是”做某事的问题。@Gareth这绝对不是一个主要取决于延迟的过程中的微优化-取决于环境(特别是延迟)这真的能带来不同。对于1个数据包,服务器可以立即处理它,而对于2个数据包,通常中间有一个典型的ack,这可能意味着增加了2倍的end2end延迟。此外,数据包错误的可能性会增加100%,等等。不过,我同意你的观点,那不应该被视为“总是”做某事的理由。第二部分已经足够让我更喜欢GET then Post,但我不会被说服遵循REST标准,因为它没有更快和缓存。还有其他原因不使用Post方法进行非关键操作吗?@gdoron,就我个人而言,我在应用程序中总是遵循REST标准,所以这是我的第一个论点。