Dav*_*ams 10 cookies jax-rs jersey servlet-filters
我有一个ContainerResponseFilter
,我试图在其中设置一个cookie如下:
@Override
public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException {
String cookieName = "ExampleCookie";
String cookieValue = "SomeData";
logger.info("Setting cookie " + cookieName + " with value " + cookieValue + " into cookies " + JsonUtils.objectToJson(containerResponseContext.getCookies()));
containerResponseContext.getCookies().put(cookieName, new NewCookie(cookieName, cookieValue));
}
Run Code Online (Sandbox Code Playgroud)
但这会产生以下错误:
Caused by: java.lang.UnsupportedOperationException: null
at java.util.AbstractMap.put(AbstractMap.java:203) ~[na:1.7.0_67]
Run Code Online (Sandbox Code Playgroud)
在这里设置cookie是不可能的?如果是的话,我该怎么做?
Pau*_*tha 17
是的,这似乎有点奇怪,这是不允许的.不知道为什么不允许这样做.我用Jersey和Resteasy进行了测试.使用Resteasy,所有发生的事情都是没有设置cookie(没有例外).我认为某些操作会将cookie设置为标题,到达过滤器时,不会对cookie进行进一步操作.
我能想到的唯一工作就是自己设置标题
responseContext.getHeaders().add("Set-Cookie", new NewCookie("Hello", "World"));
Run Code Online (Sandbox Code Playgroud)
的toString()
的NewCookie
将返回它应该如何看的头
Set-Cookie: Hello=World;Version=1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3425 次 |
最近记录: |