当连接到wifi时,使用aws sdk为iOS放置对象请求

neb*_*llo 5 https file-upload amazon-s3 ios nsurlerrordomain

我们的iOS应用程序使用aws sdk使用putObjectRequest端点将小图片上传到s3.

我们的一些用户受到一个奇怪的问题的影响,这个问题完全阻止他们在连接到特定的wifi网络时上传任何图片.我们设法暂时解决了这个问题,但我们不知道是否有更好的解决方案,所以我们仍然想知道如何摆脱这个问题.

这就是我们对此问题的了解:

  • 这个问题影响了几个iOS版本,iOS设备,aws sdk更新,我们多年来一直面临着这个问题.
  • 这种情况只有在用户连接到wifi时才会发生,使用移动网络不会造成任何问题.
  • 受到威胁的无线网络ISP是沃达丰意大利,但我们不知道是否还有其他人.大小小于15kb的文件更有可能正确上载,而大于100kb的文件总是失败.
  • 在从客户端上传图片数据到s3期间发生问题.为此,我们使用S3PutObjectRequest类.
  • 在请求启动后的两秒内,由AmazonServiceRequestDelegate协议的方法request:didFailWithError:返回错误.在这种情况下,我们设法记录了两个不同的错误实例:
    • 错误域= NSURLErrorDomain代码= -1200"发生SSL错误,无法与服务器建立安全连接."
    • 错误域= NSURLErrorDomain代码= -1021"请求正文流耗尽"

我们试图做的:

  • 使用最新版本更新aws库.这并没有解决问题.

  • 为上传请求使用更大的connectionTimeout值.这并没有解决问题.正如我所说,在启动请求之前几秒钟就会触发错误.

  • 将aws端点更改为使用http而不是https:http://s3.amazonaws.com.这解决了这个问题.


您之前是否听说过这个问题,可能与另一个无线ISP有关?使用http上传是否通过在纯文本上传递签名令牌将自己暴露给安全问题?

我们正在使用amz-security-token标头中设置的临时标记对每个请求进行签名,如下所述:http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#UsingTemporarySecurityCredentials

谢谢