5

ユーザーをあるURLにリダイレクトしていて、それを使ってCookieを送信したいと思います。

        Cookie cookie = new Cookie("CADASTROADM", "someValue");
        cookie.setPath("/");
        cookie.setMaxAge(129600); //With it or without, makes no difference.
        URL urlToRedirect = new URL(pageToRedirect);
        cookie.setDomain(urlToRedirect.getHost());//With it or without, makes no difference.
        response.addCookie(cookie);
        response.sendRedirect(pageToRedirect);

ただし、彼がページにリダイレクトされたとき、Cookieはそこにありません。ユーザーを絶対ページにリダイレクトしているため、requestDispatcher.forward()を使用できません。

出来ますか?私は何が間違っているのですか?

4

1 に答える 1

9

Cookieは、リクエストの送信先と同じドメインまたはサブドメインに対してのみ設定/取得できます。そうでなければ、それは巨大なセキュリティホールです。

したがって、別のドメインにリダイレクトする場合、Cookieはそのドメインでは利用できません。Cookieドメインをその別のドメインに明示的に設定している場合、それは明らかに無視されます。Cookieドメインを明示的に設定していない場合(したがって、デフォルトでリクエストの送信先と同じドメインに設定されている場合)、リダイレクトされたドメインではなく、現在のドメインでのみ使用できます。

具体的な機能要件に応じて、別の方法を探す必要があります。質問の具体的な機能要件については何も言わなかったので、提案するのは難しいです。おそらく、特定のリクエストパラメータを一緒に送信する必要がありますか?

于 2012-08-09T00:44:19.563 に答える