flask не обрабатывает параметры uriencoded одинаково на appengine и dev_appserver

Я боролся с этим некоторое время, и, похоже, не могу понять это. У меня есть проект google appengine с флягой, и мне нужен маршрут, который обрабатывает данные в кодировке base64 URI.

Вот обработчик, который у меня есть для этого маршрута:

@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

чего я и ожидал.

Использование тех же URL-адресов в развернутой версии для appengine:

  • Первый возвращает тот же результат
  • Второй терпит неудачу, потому что %2f декодируется до маршрутизации в /, поэтому маршрут больше не соответствует шаблону.

Мои вопросы):

  • Почему appengine (или flask?) декодирует URL-адрес перед маршрутизацией?
  • Почему поведение локального и развернутого appengine несовместимо?

Спасибо за вашу помощь


person bastien girschig    schedule 03.05.2018    source источник
comment
Похоже на ошибку. Я предлагаю сообщить об этом здесь: issuetracker.google.com/savedsearches/559750.   -  person gaefan    schedule 04.05.2018
comment
Спасибо за совет. Я создал отчет об ошибке здесь. Есть идеи, сколько времени им понадобится, чтобы дать мне ответ?   -  person bastien girschig    schedule 07.05.2018


Ответы (1)


Я создал задачу в системе отслеживания проблем Google, и кто-то признал ее.

Думаю, теперь нам просто нужно подождать.

person bastien girschig    schedule 03.08.2019