これは一般的な使用例ですが、私は近づいてきています。また、私はScalaを使っていますが、Javaの答えもうまくいくはずです。Jersey/JAX-RS(Scala)のすべてのレスポンスにクッキーを追加する
ジャージーでは、アプリから出てくるすべてのレスポンスに簡単なクッキーを設定したいと思います。
簡単にGoogleは、私が実行することにより、単一の応答にクッキーを設定することができることを示し、以下:
私はちょうどごとの応答単位でクッキーを設定したい場合は素晴らしいことだreturn Response.ok(new Viewable("/index", model)) .cookie(new NewCookie("name", "Hello, world!")) .build();
が、私すべての反応にそれが欲しい。これはミドルウェアの仕事のようです。ミドルウェアを設定するためのJersey Docs recommend this:
class MyResponseMiddleware ContainerResponseFilter {
override def filter(req: ContainerRequestContext, res: ContainerResponseContext) = {
// do stuff here
}
}
問題は変更可能で.getHeaders()
とは異なり、読み取り専用のマップを返します.getCookies
としてContainerResponseContext
にクッキーを設定する方法はありませんです。
containerResponseContext.getHeaders().add(HttpHeaders.SET_COOKIE, new NewCookie(...))
が、これはブラウザにそれをしませんでした。
ServletResponse
またはHttpServletResponse
への参照が得られるようであれば、これはbe simpleになりますが、Jerseyのミドルウェア(フィルタ)では可能ではないようです。
これはかなり単純なユースケースのように思えるので、わかりやすいものが欠けているように感じます。
フィルタが呼び出されていることを確認しましたか? –
http://stackoverflow.com/questions/29954305/jersey-can-i-add-a-cookie-in-containerresponsefilter? – Rich