![](/img/trans.png)
[英]How to do url path check in prepare method of tornado RequestHandler?
[英]Tornado RequestHandler: How to decode url encoded query before getting the arguments
我正在使用 python Tornado 框架来构建一个 API 和 RequestHandler 来处理我通过 get() 方法获得的查询。
我的处理程序
handlers = [
(r"?", MainHandler)
]
class MainHandler(RequestHandler):
def get(self):
args = {
"text": RequestHandler.get_argument(self, "text", default=""),
"lang": RequestHandler.get_argument(self, "lang", default=""),
}
# Process the query
......
问题是当查询是像“text%3DHi%26lang%3Den”这样的 URL 编码时,RequestHandler 不会对查询进行解码并识别它的两个参数。 相反,它将“text”参数值标识为“Hi&lang=en”。
那么,如果参数是 URL 编码的,我该如何读取它们呢? 显然 RequestHandler.get_arguments() 在解析 URL 参数之前似乎没有解码它们
因为&
字符也被编码,根据 HTTP 规范,它被视为值的一部分,而不是分隔符。
事实上,整个字符串 - text%3DHi%26lang%3Den
应该被视为单个值,因为分隔符( =
和&
)也被编码。
基本上,当您发送请求时,您只需编码参数值,而不是整个查询字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.