Что корректный ответ к запросу POST HTTP?

Еще один (idio (ma) tic) способ:

URL.split("/")[-1]
30
задан bignose 1 May 2009 в 07:00
поделиться

5 ответов

Перенаправление после сообщения или отправляет/перенаправляет/получает, что-то, что Ваше приложение должно сделать, чтобы быть удобным для пользователя.

Редактирование . Это выше и вне Спецификаций HTTP. Если мы просто возвращаем 201 после того, как POST, кнопка "Назад" браузера будет вести себя плохо.

Примечание, что запросы веб-сервисов (которые НЕ отвечают на браузер) следуют стандарту полностью и НЕ перенаправляют после сообщения.

Это работает как это.

  1. браузер ОТПРАВЛЯЕТ данные.

  2. Ваше приложение проверяет данные. Если это недопустимо, Вы отвечаете формой, таким образом, они могут зафиксировать его и POST.

  3. Ваше приложение отвечает перенаправлением.

  4. браузер получает перенаправление и делает ПОЛУЧАТЬ.

  5. Ваше приложение видит ПОЛУЧАТЬ и отвечает.

Теперь - эй престо! - работы кнопки "Назад".

14
ответ дан S.Lott 11 October 2019 в 14:02
поделиться

Как указано в спецификации ответ ДОЛЖЕН быть HTTP 201 с перенаправлением. Таким образом, это не обязательно для поставщика браузера для реализации корректного ответа...

необходимо попытаться измениться на 30x код, чтобы видеть, перенаправляется ли он правильно. Если так, это - проблема браузера, еще это может прибыть из Вашего кода (я ничего не знаю в ASP.NET, таким образом, я не могу "проверить" Ваш код)

1
ответ дан Pierre-Yves Gillier 11 October 2019 в 14:02
поделиться

Чтобы быть явными, браузеры (включая современные браузеры как Firefox 3 и IE8) "не понимают намек" и продолжают HTTP 201: Created ответ с ПОЛУЧИТЬ запросом к URI предоставляется в заголовке Местоположения.

Если Вы хотите, чтобы браузеры перешли к URI, предоставленному в заголовке Местоположения, необходимо отправить HTTP 303: See Other состояние вместо этого.

18
ответ дан dthrasher 27 November 2019 в 22:37
поделиться

Мое решение состоит в том, чтобы ответить сообщением «201 Created», содержащим простую страницу со ссылкой на новый ресурс, и перенаправлением javascript с помощью location.replace ().

Это позволяет тот же код работает для запросов API и браузера, хорошо работает с кнопками «Назад» и «Обновить» и плавно ухудшается в старых браузерах.

6
ответ дан 27 November 2019 в 22:37
поделиться

Разве это не должно учитываться только тогда, когда что-то «Создано», и поэтому простого перенаправления к действию должно быть действительно достаточно?

0
ответ дан 27 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: