【问题标题】:can I get the POST data from environment variables in python?我可以从 python 的环境变量中获取 POST 数据吗?
【发布时间】:2016-06-28 12:09:32
【问题描述】:

我正在尝试理解 http 查询,并通过环境变量成功地从 GET 请求中获取数据,方法是首先查看环境变量的键,然后访问“QUERY_STRING”以获取实际数据。

像这样:

#!/usr/bin/python3
import sys
import cgi
import os

inputVars = cgi.FieldStorage()

f = open('test','w')
f.write(str(os.environ['QUERY_STRING])+"\n")
f.close()

有没有办法获取 POST 数据(相当于 POST 的“QUERY_STRING” - 可以这么说),还是因为 POST 数据是在自己的包中发送而无法访问?到目前为止,环境变量的键没有给我任何提示。

【问题讨论】:

  • 感谢您的建议!可悲的是,这不是我试图问的。我正在以某种方式寻找 POST 等效的 von 'QUERY_STRING'。我确实了解如何通过 cgi FieldStorage 获取单个参数,但我尝试以原始格式获取 Post 消息数据。我希望这能澄清我的问题。我稍微编辑了我的问题。
  • Schien 的第二个回答说:n Python, these functions would be os.getenv('QUERY_STRING') and sys.stdin.read(). Remember to import os and sys modules. 所以我认为相当于在标准输入上阅读。可能应该有一个 cgi 标准来定义它?
  • 你是绝对正确的。我应该更深入地阅读cmets!他们大多数时候总是提供这些很棒的额外答案。感谢您指出了这一点!我在这里很新。保持重复在线有用吗?还是我应该删除我的问题?
  • 我猜你的问题并不是问题的重复,因为你不是要求一般处理,而是特别关于环境变量。因此,我想您的问题很有价值,因为如果其他人问自己该特定问题,他可能会找到您的问题而不是另一个问题(即使其中一个答案提供了您问题的答案)。您可以发布一个自我回答并接受吗?

标签: python http http-post environment-variables cgi


【解决方案1】:

可能的重复链接解决了它,正如 cmets 中指出的同义词和用户 Schien 在链接问题的答案之一中解释的那样:

原始的http post数据(查询后的东西)可以通过标准输入读取。 所以可以使用sys.stdin.read()方法。

我的代码现在看起来像这样:

#!/usr/bin/python3
import sys
import os

f = open('test','w')
f.write(str(sys.stdin.read()))
f.close()

【讨论】:

    猜你喜欢
    • 2019-03-28
    • 2010-10-28
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多