【发布时间】:2013-03-30 09:03:36
【问题描述】:
我有一个非常特殊的问题,设置非常简单。
该设置部署了 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;
}
当我部署这个服务器并从我的浏览器发出 post 请求时,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 数据。
所以,任何烧瓶书呆子,请帮我解决这个问题
【问题讨论】:
-
问题出在 jquery ajax 调用上。看完这篇文章就知道了stackoverflow.com/questions/11839855/…
-
如果您找到了解决方案,您也可以随时发布您对该问题的答案,所以也许其他人也会发现它也很有用(您也可以在一段时间后接受自己的答案,所以我们都知道这一点已解决)。