我有一个j2me客户端会将一些分块编码数据发布到网络服务器.我想在python中处理数据.该脚本作为CGI运行,但显然apache会拒绝对CGI脚本进行分块编码的post请求.据我所知,mod_python,WSGI和FastCGI也没有.
我想知道是否有办法让python脚本处理这种输入.我对任何建议都持开放态度(例如apache2中的混淆设置可以组装块,一个独立的python服务器也可以做同样的事情等等.)我做了很多google搜索并没有找到任何可用的东西,这是很奇怪.
我知道在服务器端使用java将是一个解决方案,但我无法想象用apache + python无法解决这个问题.
一年前我遇到了一个完全相同的问题,一个J2ME客户端与Python/Ruby后端交谈.我发现的唯一的解决方案,它不要求应用程序或基础设施水平的变化是使用的mod_proxy相对未知的功能.
Mod_proxy能够缓冲传入(分块)请求,然后在将它们传递给代理后端之前将它们重写为具有Content-Length头的单个请求.巧妙的诀窍是,您可以创建一个微小的代理配置,将请求传递回同一个Apache服务器.即在端口80上获取传入的chunked请求,"dechunk"它,然后将其传递到端口81上的非HTTP 1.1兼容服务器.
我在生产中使用这种配置一年多没有问题.它看起来像这样:
ProxyRequests OffOrder deny,allow Allow from all SetEnv proxy-sendcl 1 ProxyPass / http://example.com:81/ ProxyPassReverse / http://example.com:81/ ProxyPreserveHost On ProxyVia Full Listen 81Order deny,allow Allow from all ServerName example.com # Your Python application configuration goes here
我还在我的博客上详细介绍了问题和我的解决方案.