Response.Redirect, который отправляет данные на другой URL в ASP.NET - PullRequest
15 голосов
/ 19 мая 2011

Я хочу перенаправить ответ на другой URL, пока он содержит некоторые данные POST в своем заголовке HTTP.

// Inside an ASP.NET page code behind:
Response.Redirect("http://www.example.com/?data=sent%20via%20GET");
// This will sent data to http://www.example.com via GET.
// I want to POST this data to http://www.example.com instead.

Как это сделать в ASP.NET?

Ответы [ 4 ]

53 голосов
/ 19 мая 2011

Вы также можете отправить огромные данные с помощью этого трюка ..

Response.Clear();

StringBuilder sb = new StringBuilder();
sb.Append("<html>");
sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
sb.AppendFormat("<form name='form' action='{0}' method='post'>",postbackUrl);
sb.AppendFormat("<input type='hidden' name='id' value='{0}'>", id);
// Other params go here
sb.Append("</form>");
sb.Append("</body>");
sb.Append("</html>");

Response.Write(sb.ToString());

Response.End();
12 голосов
/ 19 мая 2011

Вы не можете POST с помощью перенаправления.По определению перенаправление означает, что сервер отправляет клиенту код состояния HTTP перенаправления 302 с новым местоположением, чтобы клиент отправил запрос GET в это новое местоположение.Вот как работает протокол HTTP, и вы не можете с этим поделать.

Таким образом, одним из способов достижения этого было бы перенаправление на некоторую временную страницу, которая будет содержать HTML <form> с method="POST" и содержать значения, которые вы хотите отправить как скрытые поля.Затем вы можете использовать javascript для автоматической отправки этой формы.

0 голосов
/ 14 июля 2016

Вы можете использовать viewstate для «передачи» данных и чтения их на новой или даже той же странице.

0 голосов
/ 21 июля 2015

Хотя это довольно старая тема, я подумала, что поделюсь, как я это делаю.

Скажем, отправляющая страница - это a.aspx, а целевая страница - b.aspx.

  1. Сбор пользовательских входных данных в .aspx.Пользователь нажимает кнопку отправки, которая вызывает обратную передачу.
  2. внутри события Button_click файла a.aspx, обрабатывающего данные тома (например, сохраняйте загруженные двоичные файлы).Определите ссылку на данные тома и добавьте ее в конец строки имени-значения request.form.
  3. Зашифруйте окончательную строку имени-значения и установите для нее файл cookie.
  4. Перенаправить на b.aspx
  5. в b.aspx, получите этот cookie, расшифруйте, и вы получите все пары имя-значение.Теперь обработайте их как обычно.

Преимущества: (a) b.aspx отображается в адресной строке браузера.Входит в историю браузера.Server.transfer сделать это.(б) дает эффект почты.Пользователи не могут видеть пару имя-значение в строке запроса.

...