3

URL自体の一部ではなく、URLのクエリ文字列のパラメータとしてJSESSIONIDを指定することにより、セッションを維持できるようにする必要があります。

言い換えれば、私はこのようなセッションを維持する必要があります

http://myserver.com?jsessionid=A463B23BC4F2342FA

それよりも

http://myserver.com; jsessionid = A463B23BC4F2342FA

サーブレットコンテナの場合、tomcat6.0とweblogic10.3の両方を使用しています。

理由:

クライアントからのリクエストに対してセッションを維持する必要があるGoogleEarthネットワークリンクを作成しています。Google EarthはCookieをサポートしておらず、リクエストに使用するURLを変更する方法がないようです。サーバーの応答でkmlに以下を追加することで、後続のリクエストにクエリ文字列パラメーターを追加するように指示することしかできません。

<NetworkLinkControl>
    <cookie>JSESSIONID=A463B23BC4F2342FA</cookie>
</NetworkLinkControl>
4

2 に答える 2

2

ありえない。クエリ文字列にURLが含まれる場合は常に、リクエストを適切なURLにリダイレクトするフィルターを作成します。JSESSIONID

基本的なキックオフの例:

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    if ("GET".equals(request.getMethod()) && request.getParameter("JSESSIONID") != null) {
        response.sendRedirect(request.getRequestURL().append(";JSESSIONID=")
            .append(request.getParameter("JSESSIONID")).toString());
    } else {
        chain.doFilter(request, response);
    }
}

そのサイトから発信される可能性のあるリクエストをカバーするURLパターンにこれをマッピングします。または、何もない場合は、/*

于 2011-08-26T23:36:13.270 に答える
0

この目的のためにカスタムTomcatバルブを作成しました。非常に簡単ですが、Tomcat固有です。

于 2013-09-10T13:40:40.913 に答える