2

我有一个非常简单的设置有一个非常特殊的问题。

该设置部署了 nginx Web 服务器以提供一些静态页面。它还有一个用于处理 POST 请求的后端 uwsgi 守护进程。

我的nginx位置配置如下

#For handling POST Request
location  = / {
#              index index.html;
#               autoindex on;

                uwsgi_pass unix:/tmp/uwsgi.sock;
                include uwsgi_params;
}

#For handling static page requests under /custpages
location ^(/custpages).*(\.html) {

                autoindex off;

 }

当我部署此服务器并从浏览器发出发布请求时,nginx 不会将 POST 数据发送到 uwsgi。

但有趣的是,当我使用 python 请求发出独立的 POST 请求时,它按预期工作。

我想知道,与独立请求相比,基于浏览器的 POST 请求有什么问题,因为两者都通过 nginx。

任何指针?

提前致谢

[更新]

这似乎是 uwsgi 的问题。对于从 python 请求发送的 POST,它返回 POST 数据,因为我可以在 uwsgi 日志中看到响应字节。

但是对于从浏览器发送的请求,响应字节为零。

在这两种情况下,uwsgi 都从 nginx 接收正确的 POST 数据,所以这似乎与 uwsgi 有关

[更新 2]

进一步更新。这个问题与 nginx 或 uwsgi 无关。

我正在为我的服务器后端应用程序使用带有flask微框架的python,问题是这样的。

我使用当前请求上下文对象读取 POST 数据如下 data_string = request.data

现在,事实证明,当从浏览器发出 POST 时,request.data 为空当从 python 请求发出 POST 时,request.data 包含正确的 POST 数据。

所以,那里有任何烧瓶书呆子,请帮我解决这个问题

4

1 回答 1

2

此问题是由于烧瓶框架中的固有行为导致 POST 数据未出现在当前请求上下文对象中。

有关详细信息和解决方案,请参阅以下问题。

Flask没有从jQuery请求数据中获取任何数据

于 2013-04-10T13:41:15.657 回答