【发布时间】:2025-12-10 22:15:01
【问题描述】:
我正在开发 spring 安全实现模块,我需要设置和获取一些 cookie。我尝试使用 (javax.servlet.http.Cookie) 和 (javax.ws.rs.core.NewCookie) 创建 cookie,它们都可以正常设置 cookie,我可以在浏览器中看到 cookie,但是当我尝试访问它们时,它确实只给了我 JSESSIONID,我还需要访问其他 cookie。
这就是我设置 cookie 的方式,在这两种方式中我都会成功地将 cookie 保存在浏览器上:
Cookie cookieOne = new Cookie("SERVLETCOOKIE", "TESTING COOKIES");
NewCookie cookieTwo = new NewCookie("WSRSCOOKIE", "TESTING COOKIES");
当我尝试访问 cookie 时,我已经尝试了以下 @Autowired 和 @Context,但我只能获取 JSESSIONID cookie。
@Autowired HttpServletRequest request;
and
@Context HttpServletRequest request;
我正在尝试访问 cookie,如下所示:
Cookie[] cookieList = request.getCookies();
if(cookieList !=null && cookieList.length >0){
for(int i=0;i<cookieList.length;i++){
Cookie cookie = cookieList[i];
if(cookie.getName().equals("SERVLETCOOKIE")){
String value1 = cookie.getValue();
logger.info("cookie found. value ="+value1 );
}
if(cookie.getName().equals("WSRSCOOKIE")){
String value2 = cookie.getValue();
logger.info("cookie found. value ="+value2 );
}
}
}
如果有人能帮我指出获取所有其他 cookie 的方法,那就太好了。
【问题讨论】:
-
所以你所做的只是创建 Cookie 对象实例?您不将它们添加到实际响应中吗?
-
我已将 cookie 对象添加到响应中,这就是我可以在浏览器上看到它们的方式。让我知道您是否知道我可以如何访问它们,现在我只能访问 JSESSIONID,正如我在问题中提到的那样。谢谢
-
感谢大家的意见和那些真正花时间回答它的人,我最终通过使用 (javax.servlet.http.Cookie) 并设置域和路径来解决问题。这是我的观察,在我们为 /oauth/token 和 url 设置 http 模式以保护我们的 API 的安全配置文件中,我将创建会话从“从不”更改为“始终”,让我有一个 JSESSIONID cookie,我去了通过它的每一个属性,发现我没有在我的 cookie 中设置路径和域,在我设置这两个属性后,我现在可以访问我的 cookie。
标签: java spring rest cookies jersey-client