【问题标题】:flask url parameters with spaces generates urls with spaces带空格的flask url参数生成带空格的url
【发布时间】:2014-02-18 11:09:50
【问题描述】:

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

如果用户输入带有空格的字符串,则生成的 url 带有空格,它似乎可以工作。

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

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

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

【问题讨论】:

  • 这是您的浏览器,向您显示空格;一切都按预期工作。

标签: python url flask url-routing percent-encoding


【解决方案1】:

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

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

另一方面,您的浏览器可能会选择显示这些经过解码的网址,以便于阅读。

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

【讨论】:

  • 我只是尝试复制/粘贴,看起来你是对的。 OTOH,当我在末尾添加随机垃圾时,我的 404 页面显示 request.url 的空间不是 %20 s。很奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
相关资源
最近更新 更多