我们在使用django构建的生产中有一个基于Web的应用程序。它部署在代表apache的nginx上,后者通过WSGI处理django应用程序。操作系统是Ubuntu。
除了基于Web的前端,我们最近开发了一个J2ME客户端,用于通过手机上传文件。 J2ME传输文件,Transfer-Encoding设置为“Chunked”,内容长度设置为零;这是J2ME框架的标准方式,显然无法更改。
问题是nginx和apache都不允许零内容长度的分块数据并返回HTTP 411 error response。 django似乎也有问题,但可以轻松修补。
网上很少有解决方案建议重新编译nginx和apache,但我不想进入那个。可以有一个更简单的解决方案吗?
答案 0 :(得分:1)
根据我的经验,如果使用OutputStream.flush(),J2ME会切换到分块编码。避免刷新,只需写入OutputStream然后立即关闭它。我能够使用J2ME向Apache / Django设置提交POST就好了。因使用flush()而得到411错误。一旦我删除它,它工作正常。我没有手动设置Content-Length,它是自动设置的。