Java SessionID:Get SessionIDパラメーターの名前を取得する方法は?
-
19-09-2019 - |
質問
it seems that the Parameter-Name in the GET request, that represents the SessionID (like jsessionid=XXXXXXXXXXXXXXXXXXXXXXXXXX in Tomcat) is not standardized in the servlet-spec? SESSIONIDの(Serveltコンテナ固有の)名前を取得するにはどうすればよいですか? (少なくともWebSphereでは、sessionId-parameter-nameの名前を変更する可能性があるようです)
=>アンダーレイの問題は、セッションIDを使用してサーブレットアルウィヤのURLをエンコードする必要があることです。しかし、「response.encodeurl()」メソッドは、Cookieが無効になっている場合にのみこれを行うようです(=>したがって、URLのSessionIDでURL rewritingを使用してください)。
サーブレットにセッションIDを使用して常にURLをエンコードするための代替手段は何ですか?最初の質問が示すように、私は自分でSessionIDを構築したいと思っていましたが、したがって、標準化されていないように見えるSessionID-Parameter名が必要なので、どこかからパラメーター名を取得する必要があります...)
更新:意図は、サーブレットコンテナーによって提供されるセッション管理機能を維持し、完全にオフにしないことです。セッションを常に封じ込めたいサードパーティシステムにコールバックURLを渡す必要があります。だから私はこれをエンコードしたいだけです 独身 セキュリティの問題を最小限に抑えるために、常にsessionIDを使用してURL ...
ヤンナンありがとうございます
解決
jsessionid
実際には要求パラメーターではなく、URL自体にエンコードされ、コントローラーまで到達する前にコンテナによってデコードおよび削除されます。 JSessionID自体の価値は取得できます HttpSession.getId()
.
TomcatがCookieを使用するのを止めたい場合は、Tomcat固有のものを提供できます context.xml
下のファイル WEB-INF
, 、このようなものを含む:
<Context cookies="false" path="/path/to/my/webapp">
</Context>
これにより、そのWebAppのすべてのCookieが無効になり、Tomcatは代わりにすべてのセッションIDをURLに自動的にエンコードする必要があります。