response.redirect всегда является ответом HTTP GET? - PullRequest
1 голос
/ 29 января 2011

response.redirect всегда является ответом HTTP GET?или это может быть POST? ....

Ответы [ 5 ]

4 голосов
/ 29 января 2011

В большинстве API стандартная реализация перенаправления выполняет 302, что действительно для определения GET. Что касается истории ваших вопросов, вы знакомы с ASP.NET, однако я также добавлю примеры для Java-сервлетов.

ASP.NET:

Response.Redirect("http://google.com");

Servlet:

response.sendRedirect("http://google.com");

Неявно устанавливает статус ответа на 302, а заголовок Location - на указанный URL.

Когда текущий запрос является запросом POST и вы хотите перенаправить с помощью POST, вам потребуется перенаправление 307. Это не обеспечивается стандартным API, но обычно это просто вопрос установки соответствующего статуса ответа и заголовка.

ASP.NET:

Response.Status = "307 Temporary Redirect";
Response.AddHeader("Location", "http://google.com");

Servlet:

response.setStatus(307);
response.setHeader("Location", "http://google.com");

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

2 голосов
/ 30 января 2011

Предполагая, что вы используете asp.net, возможно, server.transfer может быть тем, что вы ищете.Вместо отправки нового URL-адреса клиенту вы можете передать обработку на другую страницу и сохранить состояние формы.

1 голос
/ 29 января 2011

Перенаправление - это Http-ответ, отправленный клиенту.Ответ содержит заголовок Http с именем Location, который должен содержать абсолютный URL.

Затем клиент отправляет запрос GET на этот URL.

Так что нет, POST не является опцией.

Подробнее здесь: http://en.wikipedia.org/wiki/URL_redirection

1 голос
/ 29 января 2011

Response.redirect использует только GET. Это не может быть сообщение. А между ними какой язык?

0 голосов
/ 12 декабря 2018

Вопреки большинству ответов здесь перенаправленный HTTP-запрос only GET, если

  • исходный запрос был GET, или
  • код состояния был 303,или
  • код состояния был 301 или 302, а исходный запрос был POST.
...