Сделать запрос POST при перенаправлении в колбу
Я работаю с колбой. Я нахожусь в ситуации, когда мне нужно перенаправить почтовый запрос на другой URL-адрес, сохраняя метод запроса, то есть метод "POST". Когда я перенаправил запрос "GET" на другой URL, который принимает метод запроса "GET", это нормально. Вот пример кода, с которым я пытаюсь выше...
@app.route('/start',methods=['POST'])
def start():
flask.redirect(flask.url_for('operation'))
@app.route('/operation',methods=['POST'])
def operation():
return "My Response"
Я хочу сделать запрос "POST" к URL "/start", который внутренне также делает запрос "POST" к URL "/operation". Если я изменяю код следующим образом,
@app.route('/operation',methods=['GET'])
def operation():
return "My Response"
Код отлично работает для запроса "GET". Но я тоже хочу сделать POST-запрос.
1 ответ
redirect
функция предусмотрена в Flask
отправляет код состояния 302 клиенту по умолчанию и, как упоминалось в Википедии:
Многие веб-браузеры реализовали этот код способом, который нарушал этот стандарт, изменяя тип запроса нового запроса на 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)