python - 在 python(或 apache 下的通用 CGI)中处理分块编码的 HTTP POST 请求

标签 python http post java-me midlet

我有一个 j2me 客户端,可以将一些分块编码数据发布到网络服务器。我想用 python 处理数据。该脚本作为 CGI 脚本运行,但显然 apache 将拒绝对 CGI 脚本的分块编码发布请求。据我所知,mod_python、WSGI 和 FastCGI 也不行。

我想知道是否有办法让 python 脚本处理这种输入。我对任何建议持开放态度(例如 apache2 中的配置设置可以组装 block ,独立的 python 服务器可以执行相同的操作等)我做了很多谷歌搜索但没有找到任何可用的东西,这是很奇怪。

我知道在服务器端求助于 java 将是一个解决方案,但我无法想象这不能用 apache + python 解决。

最佳答案

一年前我遇到了完全相同的问题,J2ME 客户端与 Python/Ruby 后端通信。我发现不需要更改应用程序或基础架构级别的唯一解决方案是使用 mod_proxy 的一个相对未知的功能。

Mod_proxy 能够缓冲传入(分块)请求,然后在将它们传递到代理后端之前将它们重写为带有 Content-Length header 的单个请求。巧妙的技巧是您可以创建一个微型代理配置,将请求传回同一个 Apache 服务器。即在端口 80 上接收传入的分块请求,将其“分解”,然后将其传递到端口 81 上的非 HTTP 1.1 兼容服务器。

我在生产中使用此配置一年多一点,没有出现任何问题。它看起来有点像这样:

ProxyRequests Off

<Proxy http://example.com:81>
  Order deny,allow
  Allow from all
</Proxy>

<VirtualHost *:80>
  SetEnv proxy-sendcl 1
  ProxyPass / http://example.com:81/
  ProxyPassReverse / http://example.com:81/
  ProxyPreserveHost On
  ProxyVia Full

  <Directory proxy:*>
    Order deny,allow
    Allow from all
  </Directory>

</VirtualHost>

Listen 81

<VirtualHost *:81>
  ServerName example.com
  # Your Python application configuration goes here
</VirtualHost>

我还得到了问题的完整记录和详细的解决方案 on my blog .

关于python - 在 python(或 apache 下的通用 CGI)中处理分块编码的 HTTP POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/284741/

相关文章:

python - 在 python 中使用 numpy 时出现 "shape mismatch"错误

python - 有Python函数可以实现这个功能吗?

json - ColdFusion 查询页面返回 JSON

http - 如何将多个处理程序分配给同一个 uri?

php - 将 $_POST 中给出的字符串与 php 进行比较

python - 在 Pandas 数据框 boolean 索引中使用 "opposite boolean"的正确方法

api - 如何使用相同的端口地址和不同的句柄模式来服务网页和 API 路由

jquery - MVC 3 Controller 操作不接受来自 JQuery .POST 的值

ruby-on-rails - Redmine/Rails - 发送 POST 数据时未定义的方法

python - Python:从单独的线中的点绘制一条垂直线