Ответ 1
Функция redirect
, предоставленная в Flask
, по умолчанию отправляет клиенту код состояния 302 и, как указано в Wikipedia:
Многие веб-браузеры реализовали этот код таким образом, который нарушил этот стандарт, изменив тип запроса нового запроса GET, независимо от типа, используемого в оригинале запрос (например, POST). [1] По этой причине HTTP/1.1 (RFC 2616) добавил новые коды статуса 303 и 307, чтобы устранить двусмысленность между двумя типами поведения, с 303 мандатом на изменение тип запроса в GET и 307, сохраняющий тип запроса, который был первоначально отправлен.
Итак, отправка кода статуса 307 вместо 302 должна указывать браузеру сохранить использованный метод HTTP и, следовательно, иметь поведение, которое вы ожидаете. Ваш вызов redirect
будет выглядеть следующим образом:
flask.redirect(flask.url_for('operation'), code=307)