Ich versuche, die Httponly-Flagge auf dem JSESSIONID Cookie zu setzen. Ich arbeite jedoch in Java EE 5 und kann setHttpOnly()
nicht verwenden. Zuerst habe ich versucht, meinen eigenen JSESSIONID-Cookie innerhalb doPost()
des Servlets zu erstellen, indem ich response.setHeader()
verwende.Einstellung Httponly in JSESSIONID Cookie (Java EE 5)
Wenn das nicht funktioniert, habe ich versucht, response.addHeader()
. Das hat auch nicht funktioniert. Dann lernte ich, dass das Servlet die Umwandlung der Sitzung in einen JSESSIONID-Cookie übernahm und in den http-Header einfügte. Wenn ich also mit diesem Cookie spielen möchte, muss ich einen Filter schreiben. Ich habe einen Filter geschrieben und dort mit setHeader()
/addHeader()
gespielt, wiederum ohne Erfolg.
Dann habe ich gelernt, dass es einige Flush/Close-Aktion im Antwortobjekt vor dem Filter passiert, also wenn ich die Daten bearbeiten möchte, muss ich HttpServletResponseWrapper
erweitern und das an filterChain.doFilter()
übergeben. Dies ist getan, aber ich bekomme immer noch keine Ergebnisse. Natürlich mache ich etwas falsch, aber ich weiß nicht was.
Ich bin mir nicht sicher, ob dies überhaupt relevant für die Frage auf der Hand, aber kein HTML-Dokument durch das Servlet an den Browser zurückgegeben wird. Alles, was wirklich passiert, ist, dass einige Objekte gefüllt und in ein JSP-Dokument zurückgegeben werden. Ich gehe davon aus, dass das Session-Objekt in ein JSESSIONID-Cookie umgewandelt und - zusammen mit den der Anfrage hinzugefügten Objekten - in einem http-Header verpackt wird, bevor es an den Browser gesendet wird.
Ich würde gerne einige Codes schreiben, aber ich mag die Möglichkeit auszuschließen, dass meine Schwierigkeiten aus einem Missverständnis zunächst der Theorie stammen.
einige Code hinzugefügt Formatierung weil othe es war ein bisschen eine unnahbare Wall Of Text. Könnte immer noch in Erwägung ziehen, Beispielcode für das zu veröffentlichen, was Sie versucht haben. –