Python 在WSGI应用程序中获取未替换的URI

Python 在WSGI应用程序中获取未替换的URI,python,wsgi,werkzeug,Python,Wsgi,Werkzeug,我是根据一个规范编码的,在这个规范中,编码字符——特别是斜杠——是重要的。但是,尽管我可能会尝试,但在解码编码字符之前,我找不到访问URI的方法。我使用的是Werkzeug,但如果我运行以下命令,请将其还原为一个简单的示例: 来自wsgiref.util导入请求\u uri 从wsgiref.simple_服务器导入make_服务器 def应用程序(环境、启动和响应): 状态='200正常' 标题=[('Content-type','text/plain')] 启动\u响应(状态、标题) 返回请

我是根据一个规范编码的,在这个规范中,编码字符——特别是斜杠——是重要的。但是,尽管我可能会尝试,但在解码编码字符之前,我找不到访问URI的方法。我使用的是Werkzeug,但如果我运行以下命令,请将其还原为一个简单的示例:

来自wsgiref.util导入请求\u uri
从wsgiref.simple_服务器导入make_服务器
def应用程序(环境、启动和响应):
状态='200正常'
标题=[('Content-type','text/plain')]
启动\u响应(状态、标题)
返回请求\u uri(环境)+'\n'
制作服务器(“”,5000,应用程序)。永远为你服务()
然后:

me@here:~ $ curl "http://localhost:5000/abc%2F123/foo"
http://localhost:5000/abc/123/foo

如您所见,
%2F
已解码为
/
。我已经深入研究了环境,但是我发现访问URI或其部分的每一种方式都是这样的。有什么我遗漏的吗?

对于某些WSGI服务器,它可以在WSGI环境字典中传递的
请求URI
值中找到。然而,使用它是完全不可靠的,因为它是由浏览器发送的原始形式,并且根本没有对它进行任何正常化来清理它。您必须复制web服务器通常会执行的所有规范,这可能很棘手,而且依赖它会使代码不可移植,因为只有一些WSGI服务器提供它

总的情况是,在WSGI下,没有一个真正好的方法来做你想做的事情。如果您想了解更多,我建议您仔细阅读PythonWeb-SIG邮件列表,该列表过去曾对此进行过讨论