我的目标是我的SSI(shtml)将解析POST数据参数并返回一个长加密字符串,该字符串将基于这些参数。 我使用IIS作为服务器。
我的约束:
我尝试了什么:
document.shtml:
<!--#exec cgi="/pythonApp/test.py?sdfsdf=sdfsdf" -->
&#13;
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"
&#13;
这里的问题是,如果我发送邮件请求到... / test.py,那么它可以工作, 但是如果我将请求发送到document.shtml,则内容长度仍为正值,如环境变量所述,但是stdin将出错。
<!--#exec cgi="/pythonApp/test.py?sdfsdf=sdfsdf" -->
&#13;
问题在于,我查看了网络,并没有找到一种方法从shtml中做到这一点。
有什么建议吗?我错过了一些简单的东西吗?
答案 0 :(得分:0)
我还没有找到使用SSI指令来做它,我确实理解stdin没有从主脚本传递给cgi。
所以我发现其他解决方案仍能解决我的问题。
在SHTML的IIS处理程序映射中,我将可执行文件配置为php。
并在shtml中我自己写了一个PHP代码(这里只显示打印json字符串的示例):
<?php var_dump($HTTP_RAW_POST_DATA); ?>