Heroku 上的 ASIHttpRequest 重复请求

Heroku 上的 ASIHttpRequest 重复请求

我有一个使用 ASIHttpRequest 的 iPhone 应用程序。服务器代​​码位于 node.js 中的 heroku 上

有时,从 iphone(仅有一个跟踪)应用程序发送一个请求,但在 herokuapp 上收到两次(我可以在 heroku 日志中看到两次相同的请求)。

我虽然一开始由于第一次尝试出现错误而请求了两次,但事实并非如此,因为两个请求(我需要的请求和我不需要的第二个请求)都是在服务器端执行的。

任何想法 ?

答案1

这也困扰了我。我使用 GET 请求在服务器上验证多用途优惠券代码。当我们添加兑换代码的速率限制时,一些客户报告称他们提前达到了限制。结果发现,一些验证触发了两次兑换。

我假设您的请求使用 GET 方法。

使用 GET 时的默认行为是允许持久连接(Keep-Alive HTTP 标头)。

使用持久连接时,如果网络上出现问题(这是技术术语),您的 GET 请求可能会被重新传输,而不是请求失败。这通常是可取的,因为 GET 请求通常不会对服务器产生任何副作用。

另一方面,POST 或 PUT 请求默认不使用持久连接,并且不会重新传输您的操作,这很可能是信用卡购买或其他具有重大副作用的操作。

如果您希望防止 ASIHTTPRequest GET 有时发送 2 个或更多服务器请求(由于您无法控制的网络问题),您可以简单地设置此标志:

request.shouldAttemptPersistentConnection = NO;

这应该可以解决服务器上虚假的 GET 重复问题。

相关内容