想做一个单点登录的功能,有2个部署在同一服务器上的应用A和B,A的作用就是验证和设置cookie。功能就是每当有请求发往B,B都会先获取cookie,如果不存在cookie就会将请求转向A的登录页面,并且由A设置cookie(存在cookie的情况先不讨论,因为现在在B这里始终取不到A中设置的cookie)代码如下//这是A的部分代码,功能就是当用户登录后,保存用户的登录信息
String username = req.getParameter("user");
String password = req.getParameter("pass");
String pass = users.get(username);
if(pass == null || !pass.equals(password)){
resp.sendRedirect("/fail.jsp");
}else {
String gotoURL = req.getParameter("goto");
String newid = createNewid();
ssoid.put(newid, username);
Cookie cookie = new Cookie("CookieTest", newid);
cookie.setMaxAge(10000);
resp.addCookie(cookie);
System.out.println("cookie saved!");
if (gotoURL != null)resp.sendRedirect(gotoURL);//请求转向到应用B
}//这是B中的部分代码
Cookie[] diskCookies = request.getCookies();
        System.out.println(diskCookies);//始终输出null
        if (diskCookies != null) {
            for (int i = 0; i < diskCookies.length; i++) {
                if(diskCookies[i].getName().equals("CookieTest")){
                    cookieValue = diskCookies[i].getValue();
 
                    //如果找到了相应的cookie则效验其有效性
                    result = SSOService(cookieValue);
                }
            }
        }不知道为什么B中就是取不到cookie,请各位牛人帮忙看下,先谢了。

解决方案 »

  1.   

    A和B是同一个域名(虚拟主机名)吗? 在A中保存的Cookies没有设置路径.如果A和B是通过 http://192.168.0.9/a/ 和 http://192.168.0.9/b/ 来访问的, 把cookies路径设置为/应该就可以了如果跨了域,那就的确取不到了
      

  2.   

    是一个域名,而且我把path设置成/也设过,但是还是没有