【发布时间】:2018-04-13 12:08:25
【问题描述】:
我将 mod_python 用于我自己的自定义身份验证机制,如下所示:
# apache/conf/conf.d/mod_python.conf
<Directory some/path>
PythonAccessHandler myhandler::myhandler
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
-
# myhandler.py
from mod_python import apache
def myhandler(req):
if check(req):
return apache.DECLINED
else:
return apache.HTTP_UNAUTHORIZED
def check(req):
from random import random
return random() >= 0.5
并且想要在 myhandler 拒绝时执行一些 CGI 脚本。
#!/bin/bash
# test.cgi
echo Content-type: text/plain
echo
echo "Hello!"
此配置工作正常,但除此之外,我想将几个信息从 mod_python 传递到 CGI 脚本,就像这样:
# myhandler.py
def myhandler(req):
if check(req):
import sys
req.subprocess_env['python_version'] = repr(sys.version_info)
return apache.DECLINED
else:
return apache.HTTP_UNAUTHORIZED
-
#!/bin/bash
# test2.cgi
echo Content-type: text/plain
echo
echo "python version = $python_version"
但是,此配置不起作用。传递给 req.subprocess_env 的值在 CGI 脚本中被丢弃。
有没有办法将信息从 mod_python 传递到 CGI 脚本?
任何帮助将不胜感激。
【问题讨论】:
标签: python cgi mod-python