首先,如果已经被问过,请不要开枪 - 我环顾四周但无济于事.
我有一个python文件(命名rpc.py
)包含许多服务AJAX请求的函数.例如:
def test(self, vars):
return vars['id']
def test2(self, vars):
return vars['id']+1
Run Code Online (Sandbox Code Playgroud)
并使用以下URL调用它:
rpc.py?fnc=test2&id=4
Run Code Online (Sandbox Code Playgroud)
我想调用与'fnc'
查询参数匹配的函数并将整个查询字符串传递给'vars'
.
所以我想要的是以下"伪代码":
vars = cgi.FieldStorage()
print "Content-Type: text/html\n\n"
print eval('vars["fnc"].value(vars)')
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
您可以使用
getattr(server, vars["fnc"])(vars)
Run Code Online (Sandbox Code Playgroud)
但我还建议在服务名称中添加一个前缀(例如"do_test"),以避免恶意代码只能通过传递他们的名字来调用服务器对象的任何方法(包括你认为不应该的名字) T).在这种情况下,它会
getattr(server, "do_" + vars["fnc"])(vars)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
585 次 |
最近记录: |