好的,所以我想通过这段代码
来捕获Flask应用中的所有网址@app.route('/<path:path>')
def catch_all(path):
return path
只是一个基本的应用程序,显示每个页面的相对路径。因此,这适用于大多数路径(localhost/whatever/I/want
,例如print whatever/I/want
)。
除一例外。例如,如果我在网址栏中输入localhost/foo/http://google.com/bar
,我希望显示的内容是foo/http://google.com/bar
,但实际得到的只是bar
。因此,实际上Flask会找到最后一个有效的URL并获取此URL后面的路径。
无论如何都要抓住我们网址的真实路径?
修改:我使用Google App Engine for Python运行Flask 0.10。
答案 0 :(得分:2)
我能够使用当前的Google App Engine SDK重现您的问题;这是由捆绑的CherryPy服务器解析请求的方式引起的。
此问题仅将 应用于本地开发服务器,当您将应用部署到Google时,其他处理程序会解析URI并且http://
方案未解析。
请参阅CherryPy issue #1284以及相应的appengine devserver ticket。
解决方法是对冒号进行URI编码:
http://localhost:8000/foo/http%3A//google.com/bar
作品。