我有一个非常奇怪的问题,一个非常简单的设置。
该安装程序部署了nginx Web服务器,用于提供一些静态页面。它还有一个用于处理POST请求的后端uwsgi deamon。
我的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;
}
当我部署此服务器并从浏览器发出post请求时,nginx不会将POST数据发送到uwsgi。
但有趣的是,当我使用python请求发出一个独立的POST请求时,它会按预期工作。
我想知道,与独立请求相比,基于浏览器的POST请求有什么问题,因为两者都是通过nginx。
任何指针?
提前致谢
[UPDATE]
这似乎与uwsgi有关。 对于从python请求发送的POST,它返回POST数据,因为我可以在uwsgi日志中看到响应字节。
但是对于从浏览器发送的请求,响应字节为零。
在这两种情况下,uwsgi都会从nginx接收到正确的POST数据,所以这似乎与uwsgi有关
[更新2]
进一步更新。这个问题与nginx或uwsgi无关。
我在我的服务器后端应用程序中使用python和flask微框架,问题是这样的。
我使用当前请求上下文对象来读取POST数据,如下所示 data_string = request.data
现在,事实证明,当从浏览器发出POST时,request.data为空 当从python请求发出POST时,request.data包含正确的POST数据。
所以,任何一个烧瓶都在那里,你帮我解决这个问题
答案 0 :(得分:2)
此问题是由于flask框架中的固有行为导致POST数据在当前请求上下文对象中不会显示。
有关详细信息和解决方案,请参阅以下问题。