2014-09-28 41 views
0

我已经经历了一个奇怪的行为,在我的heroku rails应用程序中,我已经打了两天,仍然无法理解问题所在。heroku rails应用程序手机浏览器文件上传超时

我有一个heroku rails应用程序,具有允许用户上传照片的功能。

从桌面浏览器上传时,照片上传功能正常工作。

但是,从我的iphone 5 safari浏览器上传时,上传功能不起作用。当我试图从我的手机浏览器上传,客户端将大约50秒左右后显示application error页面,Heroku的服务器日志会显示以下行:

2014-09-28T20:20:11.125791+00:00 heroku[router]: at=error code=H15 desc="Idle connection" method=POST path="/kitchens/1/photos" host=myapp.herokuapp.com request_id=2844a843-fff7-4c7e-aea3-fd6d393339ae fwd="24.23.199.22" dyno=web.1 connect=1ms service=55000ms status=503 bytes=0 

我有一个小小的46KB进行测试.jpg文件,在wifi连接上。相同的文件,从桌面铬浏览器上传相同的WiFi连接工作正常。 46KB是一个非常小的文件,这使我相信这不是文件大小的问题。

在heroku上,我有两个dynos,一个网络动态处理器来处理正常请求,一个工人动态处理器在后台处理照片。

我将所有的照片文件存储在亚马逊S3上。

我使用以下工具和光学处理,宝石和上传:

Amazon S3存储 carrierwave处理 minimagiccarrierwave carrierwave_backgrounder从Web服务器手头宽裕的处理作业后台工作 sidekiq为后台工作人员 redis-to-go for sidekiq

我很疑惑,为什么相同的请求,从桌面浏览器发送相同的文件w从移动浏览器发送的orks失败。我的理解是,无论是从桌面还是移动浏览器发送,HTTP请求都应该是相同的。

它与浏览器有关吗?上传功能适用于桌面Chrome和Safari浏览器,但在我的iPhone 5 Safari浏览器上失败。

我真的很感谢在这个问题上的任何帮助!

在此先感谢。

回答

0

这可能是一个DNS问题。 我尝试了相同的过程,在Chrome + iPhone6上一切正常,但Safari1 + iPhone6上的H15失败。 这两种情况在计算机上运行良好(os maverick)。

这是一个类似的问题,试一试对他有用。 H15 on Heroku SSE request

我的dns设置正确我猜这并没有解决我的问题,但也许你会更幸运。

编辑:iOS8上的错误 http://blog.uploadcare.com/post/97884147203/you-cannot-upload-files-to-a-server-using-mobile-safari

您可以安装的iOS 8.0。2解决问题或/并将您的服务器的IP分配为表单动作以确保响应。

+0

谢谢!我忘记了在这里更新,这确实是8.0上Safari的一个bug,并且已经修复! – Stephens 2014-10-07 01:22:58

0

更新

这显然是iOS 8.0上Safari的一个bug。

我与Mitmproxy调试这一点,并写了一个博客帖子大约 Here