python-3.x - flask-错误的 URL 编码
问题描述
我在 Flask 和 flask-rest-jsonapi 规范中遇到了非常奇怪的问题。
如果我使用邮递员发送以下网址,我会得到非常奇怪的行为:-
无效的网址:-
http://127.0.0.1:5000/v1/recordings?filter=[
{
"name": "rtags",
"op": "any",
"val": {
"name": "tag",
"op": "ilike",
"val": "%car%"
}
}
]
在编码的 url 中, ca 被不同的字符 %EF%BF%BD 替换。
http://127.0.0.1:5000/v1/recordings?filter=%5B%0A++%7B%0A++++%22name%22%3A+%22rtags%22%2C%0A++++%22op%22%3A+%22any%22%2C%0A++++%22val%22%3A+%7B%0A++++++%22name%22%3A+%22tag%22%2C%0A++++++%22op%22%3A+%22ilike%22%2C%0A++++++%22val%22%3A+%22**%EF%BF%BD**r%25%22%0A++++%7D%0A++%7D%0A%5D
但是,如果我发送而不是汽车一些不同的词,例如交通,那么编码的 url 字符串就可以了。
工作网址:-
http://127.0.0.1:5000/v1/recordings?filter=[
{
"name": "rtags",
"op": "any",
"val": {
"name": "tag",
"op": "ilike",
"val": "%traffic%"
}
}
]
例如
"http://127.0.0.1:5000/v1/recordings?filter=%5B%0A++%7B%0A++++%22name%22%3A+%22rtags%22%2C%0A++++%22op%22%3A+%22any%22%2C%0A++++%22val%22%3A+%7B%0A++++++%22name%22%3A+%22tag%22%2C%0A++++++%22op%22%3A+%22ilike%22%2C%0A++++++%22val%22%3A+%22%25**traffic**%25%22%0A++++%7D%0A++%7D%0A%5D"
此外,如果我将断点放在 app.py Flask 文件中,我会得到前两个字符作为大写“CAr”而不是“car”,这是我在查询字符串参数中发送的。
<Request 'http://127.0.0.1:5000/v1/recordings?filter=%5B%0A%20%20%7B%0A%20%20%20%20%22name%22:%20%22rtags%22,%0A%20%20%20%20%22op%22:%20%22any%22,%0A%20%20%20%20%22val%22:%20%7B%0A%20%20%20%20%20%20%22name%22:%20%22tag%22,%0A%20%20%20%20%20%20%22op%22:%20%22ilike%22,%0A%20%20%20%20%20%20%22val%22:%20%22%CAr%25%22%0A%20%20%20%20%7D%0A%20%20%7D%0A%5D' [GET]>}
解决方案
推荐阅读
- delphi - 通过 DrawCell 在 StringGrid 中的多字符串无法按预期工作。德尔福 10.3
- docker - 正在运行的容器的“docker attach”与“docker start -ai”
- java - stream.toArray 可以保证始终为 ArrayList 顺序吗?
- asp.net - 在 .net core 中使用 asp.net 授权
- r - 在闪亮的侧边栏中显示描述
- sql - Oracle 优化更新状态后选择的性能
- javascript - 原型构造函数链有多长?
- android - 在使用数据存储检查保存的首选项时,在移动到另一个活动之前显示活动
- visual-studio - 使用 Visual Studio Community 2019 的 Windows Installer for Office 解决方案
- javascript - SetInterval 在另一个函数中时不起作用?