我的HttpServletRequest.getCookies()没有返回整个cookie值。 cookie值是另一个键值对,所以可能会弄乱解析。我需要知道如何解决这个问题。
所以这是背景。我正在使用新的apache2.4 mod_auth_form,它通过在cookie中设置用户名和密码来进行身份验证。 cookie看起来像这样: “会话=私人用户= MYUSER&安培;私人-PW =为mypass”
我在Apache上设置了一个代理服务器,以便将某些REST调用传递给tomcat服务,在那里我有一个Jersey REST类等待它们。
我可以在浏览器中看到cookie。我也可以在php中看到完整的cookie。 但是,在我的java类中,HttpServletRequest具有“会话”cookie,但该值只是“私有用户”,而不是我期望的“private-user = myUser& private-pw = myPass”。
我最好的猜测是键值对与=和&符号搞乱了解析。如何获得完整的原始cookie值?
如果重要的话,这是我的java代码:
private String getAuthenticatedUser(HttpServletRequest httpRequest) {
String user = null;
Cookie[] cookies = httpRequest.getCookies();
for(Cookie cookie : cookies) {
System.out.println(cookie.getValue());
}
}
由于
答案 0 :(得分:0)
在将值设置为cookie之前,使用URLEncoder对值进行编码。
String s = new String("private-user=myUser&private-pw=myPass");
String encoded = URLEncoder.encode(s);
并使用URLDecoder将其解码回原始值
URLDecoder.decode(encoded);
答案 1 :(得分:0)
我使用Jersey的@CookieParam注释找到了解决方法。
@GET
@Path("/")
public Response myRestCall(@CookieParam("session") String sessionValue) {
System.out.println(sessionValue);
}
泽西岛似乎在解析这种类型的键值cookie方面做得更好,并按照我的预期返回了“private-user = myUser& private-pw = myPass”。