17

HTTP ヘッダーに POST データが含まれている間に、応答を別の URL にリダイレクトしたいと考えています。

// 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

4 に答える 4

56

このトリックでも巨大なデータを送信できます..

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();
于 2011-05-19T17:06:09.907 に答える
12

リダイレクトを使用して POST することはできません。定義上、リダイレクトとは、サーバーが 302 リダイレクト HTTP ステータス コードを新しい場所とともにクライアントに送信し、クライアントがこの新しい場所に GET 要求を発行することを意味します。これが HTTP プロトコルのしくみであり、それについてできることはあまりありません。

したがって、これを実現する 1 つの方法は、非表示フィールドとして送信する値を含むHTML<form>を含む一時ページにリダイレクトすることです。method="POST"次に、javascript を使用してこのフォームを自動送信できます。

于 2011-05-19T16:59:06.133 に答える
0

かなり古いスレッドですが、私のやり方を共有したいと思いました。

送信ページが a.aspx で、送信先ページが b.aspx だとします。

  1. ユーザー入力を a.aspx に収集します。ユーザーが送信ボタンをクリックすると、ポストバックが発生します。
  2. a.aspx の Button_click イベント内で、ボリューム データを処理します (たとえば、アップロードされたバイナリ ファイルを保存します)。ボリューム データのリンクを決定し、それを request.form の名前と値の文字列の末尾に追加します。
  3. 最終的な名前と値の文字列を暗号化し、Cookie に設定します。
  4. b.aspx にリダイレクト
  5. b.aspx で、その Cookie を取得し、復号化すると、すべての名前と値のペアが取得されます。通常どおりに処理します。

利点: (a) b.aspx がブラウザーのアドレス バーに表示されます。ブラウザの履歴に入ります。Server.transfer はこれらを行います。(b) 郵便の効力を生じます。ユーザーは、クエリ文字列で名前と値のペアを確認できません。

于 2015-07-21T14:20:15.323 に答える
0

ビューステートを使用してデータを「転送」し、新しいページまたは同じページで読み取ることができます。

于 2016-07-14T02:33:26.267 に答える