Gewusst wie: übergeben Sie einen neuen header zu sendRedirect
Ich glaube, das sollte einfach sein. Ich habe eine app, wo alles, was ich bin versucht zu tun, ist ein Formular-Seite (index.jsp) ein servlet aufgerufen wird (CheckInfo.java) legt einen neuen header (myHeader) und leitet den Benutzer auf eine andere Seite (redirect.jsp). Alle diese Dateien sind auf dem gleichen server. Die index.jsp ist das senden der Anfrage an fein-und CheckInfo ist die Verarbeitung und umleiten, aber myHeader nicht zeigen, bis auf umleiten.jsp. Ich habe gelesen, mehrere Beiträge über reden Antwort.sendRedirect sendet eine 302-welche doesn T-pass-Header und dass ich verwenden soll RequestDispatcher, aber nichts scheint zu funktionieren. Gibt es keine Möglichkeit, das senden der Header von einem servlet zu einer jsp?
Hier ist der servlet-code:
response.setHeader("myHeader", "hey there");
response.sendRedirect("redirect.jsp");
Habe ich auch so probiert:
response.setHeader("myHeader", "hey there");
RequestDispatcher view = request.getRequestDispatcher("redirect.jsp");
view.forward(request, response);
Und ich habe dies in redirect.jsp:
System.out.println(request.getHeader("myHeader"));
Dies nicht alles drucken.
Wenn die Antwort auf meine Frage "Nein" ... dann würde ich dich für einen Weg, um den header, sobald ich wieder in der jsp. Meine reverse-proxy ist auf der Suche nach einem bestimmten header zu bestimmen, ob oder nicht, um eine Aktion auszuführen. Natürlich habe ich versucht, Antwort.addHeader() auf umleiten.jsp, aber die Seite ist bereits geladen, an diesem Punkt, so dass nur fühle ich mich dumm.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie diese als response-header und es ist 302-Antwort. Browser auf zu sehen, eine 302-Antwort wird nur
Location
Kopf-und Feuer-eine neue Anforderung an diese Position. Benutzerdefinierte Header in der Antwort sind unberührt, während Sie erwarten, dass diese benutzerdefinierte Antwort-Header in der Anforderung enthalten sind (zu den neuen umzuleiten, Lage), die nicht gesendet werden.Lösung:-
1. Sie können den request-dispatcher und die Anfrage weiterleitet, anstatt externe Umleitung. Und Sie müssen die request-Attribute hier.
2. Sie nennen können, senden Sie das Formular mit einem ajax-request kann wie jquery und behandeln Sie die Antwort manuell(für 302-Antwort), aber würde nicht empfehlen Sie diesen Ansatz verwenden, da es nicht eine sauberere und intuitiven Ansatz. Einfach nur zu erwähnen, so dass Sie wissen, es gibt andere Wege, dies zu erreichen.
Einen clientseitigen redirect erstellt ein neues HTTP-request/response-paar.
Dieser link kann Ihnen helfen, mehr über die debugging-Perspektive -
Benutzerdefinierte Header senden
Das problem ist, dass die
redirect()
Methode der Reaktion initiiert eine neue Anforderung zusammen, dadurch verlieren die Attribute, die gesetzt wurden, bevor Sie umgeleitet wird. Zum Glück gibt es einen fließenden Art und Weise zu lösen, das problem immer noch. Siehe untenresponse.setHeader("myHeader", "hey there");
request.getRequestDispatcher("redirect.jsp").forward(request, response);
Dann in Ihrem Ziel, das Sie tun können
response.getHeaders("myHeader")
Habe ich getestet, der code.