Я повторно использую устаревшую систему в качестве приложения Flask и должен хранить шаблоны url как есть. Один из URL-адресов включает в себя полный адрес электронной почты пользователя (другими словами, адрес электронной почты является частью URL-адреса, а не как параметр GET).Флажок перенаправляет запросы на URL-адреса, содержащие «@»
Когда я отправляю запросы на этот URL-адрес, Flask автоматически отвечает перенаправлением на тот же URL-адрес, за исключением того, что знак «@» на электронном адресе заменяется на «% 40». Например, запрос на /users/new/[email protected]/
перенаправляется на /users/new/user%40example.com/
. Я даже получаю этот ответ от Flask, когда я отправляю POST-запросы непосредственно ко второму URL-адресу, поэтому я предполагаю, что «% 40» автоматически преобразуется в символ «@» при обработке запроса.
Как мне получить флажок, чтобы принимать запросы к URL-адресам, которые включают знак «@» без перенаправления? Это может быть ошибкой Werkzeug, поскольку система определения URL-адресов Flask построена на Werkzeug.
РЕДАКТИРОВАТЬ: Я неверно включил конечную косую черту в исходном URL запроса, указанном в этом вопросе. Моя проблема была вызвана отсутствием косой черты, а не заменой «@» на «% 40».
Можете ли вы обновить свой URL-адрес POST, чтобы он использовал '% 40' вместо буквенного' @ 'и избегали кругового путешествия? Или что вам нужно, это хороший URL-адрес в адресной строке? Литературный '@' [является законным] (http://stackoverflow.com/a/19737890/223424), но все еще как-то странно внутри части домена/пути URL-адреса; возможно, Flask перереагирует, когда он его заменяет. – 9000
Я попытался отправить POST на URL с заменой «@» на «% 40», как указано выше, но Flask все еще видит запрос, как если бы он был отправлен с знаком «@». Я согласен, что странно иметь адрес электронной почты как часть пути URL-адреса, но у меня нет полномочий изменять это (многие клиенты уже используют эту конечную точку, поэтому это изменение может нарушить обратную совместимость). – Adam