是否应该阻止HTTP POST?

时间:2010-05-18 09:22:43

标签: http post

引用CouchDB documentation

  

建议您尽可能避免POST,因为代理和其他网络中介偶尔会重新发送POST请求,这可能会导致文档重复出现。

根据我的理解,这不应该在协议级别上发生(带有双击的混乱用户是一个完全不同的故事)。那么最好的行动方案是什么?

我们真的应该尝试避免POST请求并用PUT替换它们吗?我不喜欢它,因为它们传达了不同的含义。

我们是否应该预测到这一点,并通过我们希望避免意外重复的唯一ID来保护请求?我也不喜欢这样:它使代码复杂化并防止可能需要多个相同帖子的情况。

3 个答案:

答案 0 :(得分:2)

  

我们真的应该尽量避免POST   请求并由PUT替换它们?一世   不喜欢那样,因为他们传达了一个   不同的意思。

对于文档创建(如您引用的文档中所述),这正是正确的含义。对于文档修改,偶尔的重发请求不是问题。

答案 1 :(得分:2)

我们应该在请求为幂等时避免POST请求,并且确实更改服务器状态(每次执行时都不应更改服务器状态,在文档创建中这意味着只应创建文档一次)。

当请求为非幂等时,POST适用。这意味着每次发送请求时,服务器状态都会发生变化。对于更新或删除,这无关紧要。

当然,由于Web浏览器支持,实际上只采用了GET和POST请求,因为POST完成了PUT所做的一切(它不是为幂等请求设计的)。

答案 2 :(得分:0)

在WebMaster时代,我一定非常幸运,从未见过重复的POST请求。

TCP / IP发送带编号的消息,我不知道为什么任何网络服务器都不会丢弃重复的消息。

这个重复的POST事件真的是个问题吗?