2011-01-01 13 views
3

Ich habe eine Frage zum Umleiten in ASP.NET. Ich weiß, wie mit Redirect-Funktion auf anderen ASP.NET-Seite umleiten und Parameter von URL aus Request lesen, aber ich möchte nicht GET, ich brauche POST, ich sende IDs über URL, so dass Benutzer nicht sehen müssen . Wie mit POST-Methode umleiten und Parameter in ASP.NET lesen?Redirect Problem in ASP.NET

Antwort

3

Eine Umleitung, per Definition, ist ein GET, Sie können eine 301 oder 302 Umleitung mit einem POST nicht tun. Wenn Sie verhindern möchten, dass der Benutzer einen Wert sieht, können Sie diesen Wert in der Sitzung speichern und anschließend nach der Weiterleitung abrufen. Obwohl ich in der Vergangenheit festgestellt habe, dass der Versuch, etwas zu schützen, indem man den Benutzern nicht erlaubt, es zu sehen, nicht der beste Ansatz ist (Sicherheit durch Dunkelheit). Sie sollten andere Maßnahmen ergreifen, um Benutzer davor zu schützen, etwas zu tun, was sie nicht tun sollten, selbst wenn sie den Wert kennen.

Auch wenn ich falsch liege und es möglich ist, dass Sie mit POST umleiten können, dann müsste der Wert Teil der Umleitung sein, und deshalb hat der Benutzer eine Chance, etwas darüber zu erfahren, wenn sie etwas verwenden um den HTTP-Verkehr zu überwachen.

1

Sie haben mehrere andere Möglichkeiten und einer von ihnen speichert Werte in der Sitzung. Überprüfen Sie auch dies: Cross-Page-Posting

3

Es ist nicht möglich, eine POST-Anfrage über eine Weiterleitung zu stellen. Es wäre möglich, Javascript auf einer Umleitungsseite zu verwenden, aber das würde es weniger robust machen als eine normale Weiterleitung.

Überlegen Sie, ob ein Server.Transfer Ihren Zweck erfüllen würde. Es würde die URL der Seite im Browser nicht ändern, aber die Daten, die Sie in der Abfragezeichenfolge senden, würden den Server verlassen.

0

Sie müssen Sitzungen verwenden, um Variablen zwischen zwei Seiten zu übertragen. Wenn Sie mehrere Parameter haben, denken Sie über eine Klasse mit diesen Parametern nach. Sie können ein Objekt in der Sitzung behalten. Überprüfen Sie auf der zweiten Seite, ob eine bestimmte Sitzung das spezifische Objekt enthält. Andernfalls werden Parameter nicht angegeben.

Auf der ersten Seite können Sie Ihr Objekt in der Sitzung wie folgt speichern.

Session["yourSessionName"]=new Class1() 
           { 
           variable1=... 
           variable2=... 
           }; 

dann

Response.Redirect("/yourSecoundPage.apsx"); 

In zweiten Seite können Sie es überprüfen, wie diese

if (Session["yourSessionName"] is Class1) 
    { 
     //Accept parameters 
    } 
    else 
     // Parameters not specified