Java SessionID:Get SessionIDパラメーターの名前を取得する方法は?

StackOverflow https://stackoverflow.com/questions/1722493

  •  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に自動的にエンコードする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top