gpt4 book ai didi

python - 如何在 Mod_Python 中通过 POST 或 GET 发送数据?

转载 作者:行者123 更新时间:2023-12-03 17:19:46 26 4
gpt4 key购买 nike

使用 JS,我发送了一个 AJAX 发布请求。

 $.ajax(
{method:"POST",
url:"https://my/website/send_data.py",
data:JSON.stringify(data),
contentType: 'application/json;charset=UTF-8'

在我的 Apache2 mod_Python 服务器上,我希望我的 python 文件能够访问 data .我怎样才能做到这一点?
def index(req):
# data = ??

PS:这是重现问题的方法。创建 testjson.html :
<script type="text/javascript">
xhr = new XMLHttpRequest();
xhr.open("POST", "testjson.py");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function(res) { console.log(xhr.responseText); };
xhr.send(JSON.stringify({'foo': '0', 'bar': '1'}));
</script>

并创建 testjson.py包含:
from mod_python import apache 

def index(req):
req.content_type = "application/json"
req.write("hello")
data = req.read()
return apache.OK

创建 .htaccess包含:
AddHandler mod_python .py
PythonHandler mod_python.publisher

结果如下:

testjson.html:10 POST http://localhost/test_py/testjson.py 501 (Not Implemented)



enter image description here

最佳答案

正如 Grisha(mod_python 的作者)在一次私有(private)交流中指出的那样,这就是 application/json 的原因。不支持并输出“HTTP 501 Not implemented”错误:

https://github.com/grisha/mod_python/blob/master/lib/python/mod_python/util.py#L284

解决方案是修改它,或者使用常规 application/x-www-form-urlencoded编码,或使用 mod_python.publisher 以外的其他内容处理程序。
mod_python 的示例和 PythonHandler mod_python.publisher :

<script type="text/javascript">
var data = JSON.stringify([1, 2, 3, '&=test', "jkl", {'foo': 'bar'}]); // the data to send
xhr = new XMLHttpRequest();
xhr.open("POST", "testjson.py");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function(res) { console.log(xhr.responseText); };
xhr.send('data=' + encodeURIComponent(data));
</script>

服务器端:
import json
from mod_python import apache

def index(req):
data = json.loads(req.form['data'])
x = data[-1]['foo']
req.write("value: " + x)

输出:

value: bar



成功!

关于python - 如何在 Mod_Python 中通过 POST 或 GET 发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43325926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com