7

doFilter メソッドを持つフィルター クラスがあります。doFilter メソッドでは、次のように Cookie を設定しています。

HttpServletResponse httpResp=(HttpServletResponse)servletResponse;
Cookie myCookie=new Cookie("test","");
myCookie.setValue("testValue");
myCookie.setPath("/");
myCookie.setDomain(".mydomain.com");
httpResp.addCookie(myCookie);
filterChain.doFilter(servletRequest,servletResponse); 

これは理想的に機能するはずですか?httpResp(HttpServletResponse) オブジェクトに Cookie を設定してから、単に servletResponse(ServletResponse) オブジェクトを転送する

奇妙なことに、Cookie が設定されているクライアントもあれば、設定されていないクライアントもあります。クライアントのブラウザで Cookie の設定を確認しましたが、問題ないようです。

4

2 に答える 2

-2

コードを次のようにリファクタリングする必要がある場合を除いて、これは機能します。

filterChain.doFilter(servletRequest,servletResponse);

HttpServletResponse httpResp=(HttpServletResponse)servletResponse; 

Cookie myCookie=new Cookie("test","");
myCookie.setValue("testValue");
myCookie.setPath("/");
myCookie.setDomain(".mydomain.com");
httpResp.addCookie(myCookie);

別のフィルター/サーブレットが競合することをできないように、filterChain 呼び出しの後に Cookie を追加します。

于 2013-01-28T16:24:38.057 に答える