python - 带空格的 flask url 参数生成带空格的 url

标签 python url flask url-routing percent-encoding

我正在尝试将用户提供的字符串作为 Flask URL 参数传递。 url_for(func_name, param="string with spaces") 或类似的生成带空格的 URL。

如果用户输入带空格的字符串,生成的 url 中有空格,这似乎有效。

此外,如果我输入一个带有 %20 的 URL,它似乎会重定向到一个带有空格的 url。 我认为带空格的 URL 不是个好主意。

如何让它正常工作(url_for 和重定向)? 还是我应该接受它?

附言 将用户提供的字符串作为参数传递是否安全?如果不是,我应该如何清理用户输入的字符串?

最佳答案

不,Flask 生成正确编码的 URL;使用现有应用程序进行演示:

>>> with app.test_request_context('/'):
...     print url_for('core.city', city='new york')
... 
/new%20york

另一方面,您的浏览器可能会选择显示已解码的此类 URL,以便于阅读。

url_for() 引用输入是 URL 安全的;编码的 URL 不能包含可以解释为 HTML 的值,因此就用户提供的值而言,您在那里是安全的。

关于python - 带空格的 flask url 参数生成带空格的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21851939/

相关文章:

python - Scikit-learn 返回的确定系数 (R^2) 值小于 -1

Python:按所选字母顺序对单词列表进行排序

python - 使用 Webargs Flaskparser 验证 URL 路径和查询参数中的变量参数

python - Flask-SQLAlchemy ORM/GeoAlchemy2 结果为字典,最终为 JSON

javascript - Jinja2:如何创建多维 javascript 数组?

python - neo4j:删除事务中的节点会导致异常

Python 'add' 函数问题 : why won't this work?

javascript - regexp(?) 用于从另一个 URL 中提取 URL

javascript - 括号内带有参数的 REST API URL 资源

asp.net-mvc - 使用 IIS 7 重写模块重写 & 符号 URL