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

Bha*_*kar 5 python werkzeug flask

我看到 Flask 在 Request 中提供了一些已解析的字段,但是 url 是在删除转义之后的。在 Flask 进行取消转义之前,有什么方法可以访问 url 吗?

例如,当休息客户端向“ http://www.example.com/my_url%20is%20here?arg1=2&?arg2=3 ”发出请求时,Flask 会向我提供“ http://www ”的 request.base_url .example.com/my_url在这里”,其中 %20 被空格替换。我可以自己引用此内容来获取某人响应时的原始 URL,但最好我想访问客户端发送的原始 URL,而不是派生它。

bsa*_*bsa 6

这些字段不是URL,甚至不是 URI,它们是IRI。使用iri_to_uri

from werkzeug.urls import iri_to_uri
iri_to_uri(request.url)
Run Code Online (Sandbox Code Playgroud)

来自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'
...
"""
Run Code Online (Sandbox Code Playgroud)

Flask 和 werkzeug 的好处之一是您始终可以在源代码中跟踪所有内容。


小智 -2

你的意思是 %XX 逃逸?

from urllib.parse import quote

quote(url)
Run Code Online (Sandbox Code Playgroud)