jersey 怎么设置cookie?

今天设置cookie的时候遇到了一个大坑。jersey给出的方法不凑效,要另外去找解决办法。

 

一、jersey给的cookie这个方法不能用

我用这个cookie方法始终不能设置cookie。

尝试去找了一下jersey设置cookie的这个问题,网上给出的解决方法全部都是使用cookie方法。

我尝试设置NewCookie的更多参数,一点效果都没有。

我以为可以像spring mvc那样注入一个HttpServletRequest,然后用HttpServletRequest的addCookie方法来设置cookie。但是jersey框架这样设置会报错。

直接去找官方文档吧。结果文档里根本就没有关于cookie的内容。

之后我又尝试了各种各样已知的方法,都没什么用。

二、换个解决方法

我后来一想,cookie都是通过服务端在header传递的命令,由浏览器接收并生成的,所以我们就干脆通过header来让浏览器生成cookie,应该能起到一样的效果。

这样设置就ok了。

但是要注意,cookie的属性值要使用key=value的格式,每个属性之间要使用;分开。

如果要设置cookie关闭浏览器时失效,就要把Max-age参数设置成负数。

如果要删除当前cookie,首先要保证其余的所有属性相同,然后把Max-age参数设置成0。

三、总结

其实我觉得最大的问题是,为什么header方法能凑效,但是cookie方法有问题?后来我看了下源码,没有找到问题所在…

jersey其实挺坑的,资料少,方法不凑效,也不像spring mvc那样支持原生方法拓展。

在遇到问题时,最好想想问题的本质。就像这次的cookie方法一样,完全可以使用header去设置。

发表评论

电子邮件地址不会被公开。 必填项已用*标注