我有一个使用ASIHttpRequest的iPhone应用程序。 服务器代码位于node.js中的heroku上
有时,从iphone(只有一个跟踪)应用程序发送一个单一的请求,但在herokuapp(我可以看到在heroku日志中相同的请求两次看到)两次。
我虽然在开始时请求被请求两次,因为在第一次尝试的错误,但情况并非如此,因为这两个请求(我需要一个和我不需要的第二个)在服务器端执行。
任何想法 ?
这也咬了我。 我正在使用GET请求来validation服务器上的多用途代金券代码。 当我们为兑换代码添加费率限制时,有些客户报告在应有限额之前已经达到限额。 原来,一些validation触发了两个赎回。
我假设你的请求正在使用GET方法。
使用GET时的默认行为是允许持久连接( Keep-Alive HTTP标头 )。
当使用持续连接时,如果networking上的某些东西看起来不可靠(这是一个技术术语),而不是请求失败,那么您的GET请求可能会被重新传输。 这通常是可取的,因为GET请求通常不会对服务器产生任何副作用。
另一方面,POST或PUT请求默认不使用持续连接,不会重新传输您的操作,这可能是购买信用卡或其他有重大副作用的东西。
如果您希望防止您的ASIHTTPRequest GET有时发送2个或更多的服务器请求(由于您的控制之外的networking问题),您可以简单地设置此标志:
request.shouldAttemptPersistentConnection = NO;
这应该照顾在服务器上的虚假的GET重复。