我正在尝试将用户提供的字符串作为 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/