Ich möchte eine Antwort an eine andere URL umleiten, während sie einige POST -Daten in ihrem HTTP-Header enthält.
// 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.
Wie mache ich das in ASP.NET?
sie können riesige Daten auch mit diesem Trick senden.
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();
Sie können POST nicht mit einer Weiterleitung verwenden. Definitionsgemäß bedeutet eine Umleitung, dass der Server einen Umleitungs-HTTP-Statuscode an den Client mit dem neuen Standort sendet, sodass der Client eine GET-Anforderung an diesen neuen Standort ausgibt. So funktioniert das HTTP-Protokoll, und Sie können nichts dagegen tun.
Eine Möglichkeit, dies zu erreichen, wäre eine Weiterleitung zu einer temporären Seite, die einen <form>
mit method="POST"
enthält und die Werte enthält, die Sie als ausgeblendete Felder senden möchten. Dann können Sie Javascript verwenden, um dieses Formular automatisch zu übermitteln.
Mit viewstate können Sie die Daten "übertragen" und auf einer neuen Seite oder sogar auf derselben Seite lesen.
Obwohl es ein ziemlich alter Thread ist, dachte ich, ich würde sagen, wie ich es mache.
Angenommen, das Senden der Seite ist a.aspx und die Zielseite ist b.aspx.
Vorteile: (A) b.aspx wird in der Adressleiste des Browsers angezeigt. Es geht in die Geschichte des Browsers ein. Server.transfer tun dies. (B) Es gibt Post-Effekt. Benutzer können das Name-Wert-Paar in Abfragenzeichenfolge nicht sehen.