【发布时间】:2015-09-26 17:15:50
【问题描述】:
我的目标是我的 SSI (shtml) 将解析 POST 数据参数并返回一个基于这些参数的长加密字符串。 我使用 IIS 作为服务器。
我的限制:
- 我无法更改网址 - /document.shtml
- shtml 只需要返回base 64 字符串结果。
我尝试了什么:
- 在 shtml 中使用“exec cgi”,这样:
document.shtml:
<!--#exec cgi="/pythonApp/test.py?sdfsdf=sdfsdf" -->
test.py(简化版,后面没有加密逻辑):
import cgitb
cgitb.enable()
import base64,urllib,json,os,sys
import cgi
print "Content-Type: text/plain;charset=utf-8"
print
cl, _ = cgi.parse_header(os.environ['CONTENT_LENGTH'])
if (int(cl)>0):
data = sys.stdin.read(int(cl))
input_j = json.loads(data)
print "AB : ",input_j["AB"]
else:
print "Failed to read POST request"
这里的问题是,如果我将发布请求发送到 .../test.py ,那么它可以工作, 但是如果我将请求发送到 document.shtml,内容长度仍将为环境变量所描述的正数,但标准输入会出错。
- 我的另一个想法是从 shtml 本身读取 POST 数据并将其传递给 cgi,这样:
<!--#exec cgi="/pythonApp/test.py?sdfsdf=sdfsdf" -->
问题是我浏览了网络并没有找到从 shtml 中执行此操作的方法。
有什么建议吗?我错过了一些简单的东西吗?
【问题讨论】: