在Python Flask中,如何在转义前访问完整的原始URL

我看到Flask在Request中提供了一些parsed fields,但是该网址是在删除转义符之后的.在Flask完成转义之前,有什么方法可以访问URL?

例如,当其他客户请求“ http://www.example.com/my_url%20is%20here?arg1=2&?arg2=3”时,Flask向我提供了“ http://www.example.com/my_url在这里”的request.base_url,其中用空格代替.我可以自己引用它,以在有人回复时获得原始URL,但是最好是我希望访问原始URL,因为它是由客户端发送的,而不是派生它.

解决方法:

字段不是URLs, or even URIs,而是IRI.使用iri_to_uri:

from werkzeug.urls import iri_to_uri
iri_to_uri(request.url)

werkzeug/wrappers.py开始:

"""
...
Note that the string returned might contain unicode characters as the
representation is an IRI not an URI.  If you need an ASCII only
representation you can use the :func:`~werkzeug.urls.iri_to_uri`
function:
>>> from werkzeug.urls import iri_to_uri
>>> iri_to_uri(get_current_url(env))
'http://localhost/script/?param=foo'
...
"""

flask和werkzeug的优点之一是,您始终可以在源代码中始终遵循这些内容.

上一篇:GitHub 公布 2021 Top 10 博文「GitHub 热点速览」


下一篇:我如何使Flask流具有HTTP 206部分内容的静态文件?