flask不会在appengine和dev_appserver上以相同的方式处理uriencoded参数

时间:2018-05-03 13:34:55

标签: python google-app-engine flask urlencode

我一直在努力解决这个问题,似乎无法弄明白。 我有一个谷歌appengine项目,带烧瓶,我需要一个处理base64 URIencoded数据的路由。

以下是此路线的处理程序:

@app.route('/test/<data1>/<data2>', methods=['GET'])
def test(data1, data2):
    return "data1:%s<br>data2:%s"%(data1, data2)

现在,使用dev_appserver运行时,这很有效:

http://localhost/test/hi/there
# returns:
data1:hello
data2:there

http://localhost/test/hi%2fho/there
# returns:
data1:hi%2Fho
data2:there

这就是我所期望的。

在已部署的版本上使用相同的网址进行appengine:

  • 第一个返回相同的结果
  • 第二个失败,因为%2f在路由到/之前被解码,因此路由不再与模式匹配。

我的问题:

  • 为什么appengine(或烧瓶?)在路由之前解码网址
  • 为什么本地和部署的appengine之间的行为不一致?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我在Google的问题跟踪器上创建了an issue,有人认可了。

我想我们现在必须等待。