【问题标题】:GET vs. POST ajax requests: When and how to use either?GET 与 POST ajax 请求:何时以及如何使用?
【发布时间】:2010-11-25 11:18:10
【问题描述】:

在创建 ajax 请求时,GET 优于 POST 的优势是什么?我怎么知道在任何给定时间我应该使用哪个?这是出于安全考虑的决定吗?

另外,它们的实际发送方式有什么不同?

【问题讨论】:

标签: ajax post get


【解决方案1】:

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

POST 通常应该用于非幂等操作,比如保存一些东西。尽管您可以根据需要将它们用于其他操作。

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

【讨论】:

    【解决方案2】:

    您应该在 AJAX 调用中使用 GET 和 POST 请求,就像在正常调用中使用 GET 和 POST 请求一样。基本经验法则:

    请求会修改您模型中的任何内容吗?

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

    【讨论】:

      【解决方案3】:

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

      GET 请求可以非常简单地重复,因为它们的数据基于 URL 本身。

      您应该像考虑常规表单请求(及其 GET 和 POST)一样考虑 AJAX 请求

      【讨论】:

      • 为了安全起见,如果页面不是通常要导航到的页面,我应该选择 POST 吗?
      • 特别是删除的东西。
      【解决方案4】:

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

      http://developer.yahoo.com/performance/rules.html#ajax_get

      【讨论】:

        猜你喜欢
        • 2014-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多