2010-11-25 61 views
1

我有一个AJAX请求发送GET:'getPendingList'。这个请求应该返回一个JSON字符串,指出需要批准的列表待处理请求。我对我是否应该在这里使用GET或POST感到困惑。在创建AJAX请求的上下文中,GET和POST有什么区别?

this website

  • GET请求可以被缓存
  • GET请求可以留在浏览器历史记录
  • GET请求可以添加书签
  • GET请求可以分布&共享
  • GET请求可能会被黑客入侵(问雅各布!)

所以我在想:我不希望这个GET的结果被缓存,因为挂起的列表可能会改变。另一方面,使用POST似乎也没有多大意义。

我该怎么看待GET和POST?我被告知GET和'read'是一样的;它不会(或不应该)在服务器端改变任何东西。这是有道理的。没有意义的是缓存部分;如果其他人缓存我的GET请求,因为我期望数据发生更改,它不会起作用。

回答

0

所以,在一些IRC之后,看起来最好的方法是使用GET(在这个特定的实例中),但是为了防止缓存。有两种方法可以做到这一点:

1)在你的GET请求中附加一个随机字符串。

这看起来像是一个很好的方式来做到这一点,但它听起来像它可能是IE的唯一解决方案:Prevent browser caching of jQuery AJAX call result

2)在来自服务器的响应中,将标头设置为no-cache。

目前尚不清楚明确的行为是什么。一些人(见前面的链接)声称IE不尊重no-cache指令。其他人似乎认为这是有效的:Internet Explorer 7 Ajax links only load once

0

总之,GET请求应该是idempodentPOST请求不是。

如果您正在更改状态,请使用POST - 否则使用GET

不要忘了,当谈论GET/POST缓存时,那就是浏览器缓存

没有阻止你缓存数据服务器端。

而且,一般而言 - JSON呼吁应POSThere's why

+0

那么我不希望GET请求被缓存。例如:假设我有一个资源a.jpg。我做了一个GET。但后来我改变了它在服务器上的内容;如果浏览器缓存a.jpg,那么客户端的数据是陈旧的。所以,不幸的是,这听起来像POST是最好的。看到从这里的第一个答案:http://stackoverflow.com/questions/3477333/what-is-the-difference-between-post-and-get – Avery 2010-11-26 03:35:48

1

雅虎best practices可能是值得一读了。他们建议使用GET主要用于检索信息并使用POST来更新信息。在一个单独的项目中,他们还建议你让AJAX请求可以在适当的位置进行缓存。检查一下,这是一个很好的阅读。

相关问题