我正在将旧系统重新实现为烧瓶应用程序,并且必须保持网址模式不变。其中一个网址直接包含用户的完整电子邮件地址(换句话说,电子邮件地址是url的一部分,而不是GET参数)。烧瓶重定向请求到包含'@'的网址
当我向这个URL发送请求时,除了电子邮件地址中的'@'符号替换为'%40'之外,Flask会自动响应重定向到相同的URL。例如,对/users/new/[email protected]/
的请求被重定向到/users/new/user%40example.com/
。当我直接向第二个URL发送POST请求时,我甚至会收到来自Flask的响应,所以我假设在处理请求时'%40'会自动转换为'@'字符。
如何让Flask接受包含'@'符号而不重定向的请求?这可能是Werkzeug的错,因为Flask的URL解析系统建立在Werkzeug上。
编辑:我错误地在此问题中列出的初始请求URL中包含一个结尾的斜杠。我的问题实际上是由于没有斜线造成的,而不是用'%40'代替'@'。
你可以更新你的POST网址,以便它使用'%40'而不是文字'@',并避免往返?或者你在乎的是地址栏中的一个不错的网址? 文字'@'[合法](http://stackoverflow.com/a/19737890/223424),但在URL的域/路径部分仍然有点奇怪;可能Flask在更换它时反应过度。 – 9000
如上所述,我尝试将'@'替换为'%',但Flask仍然将请求看作是使用'@'符号发布的。我同意将一个电子邮件地址作为URL路径的一部分是很奇怪的,但我没有权利改变这种情况(许多客户端已经在使用该端点,因此使这种更改可能会破坏向后兼容性)。 – Adam