在Java中检索正确cookie时出现问题

在Java中检索正确cookie时出现问题,java,cookies,web-applications,Java,Cookies,Web Applications,当我在java servlet中检索cookie时,getPath()中的所有值都为null 因此,如果在目录/foo中设置了一个具有相同名称的cookie,并且在根目录中,我检索了两个具有相同确切名称的cookie,但是我无法区分它们,因为getPath()为这两个cookie返回null 我查看了firebug,发现firefox没有发送任何路径信息 我的应用程序使用路径设置为“/”的“rememberme”cookie。只要只有一个名为rememberme的cookie,一切都很好。但是,

当我在java servlet中检索cookie时,getPath()中的所有值都为null

因此,如果在目录/foo中设置了一个具有相同名称的cookie,并且在根目录中,我检索了两个具有相同确切名称的cookie,但是我无法区分它们,因为getPath()为这两个cookie返回null

我查看了firebug,发现firefox没有发送任何路径信息

我的应用程序使用路径设置为“/”的“rememberme”cookie。只要只有一个名为rememberme的cookie,一切都很好。但是,如果另一个cookie在不同的路径(如/foo)上设置了相同的名称,那么我的应用程序将不知道哪个是我为根设置的cookie


我如何区分饼干?我是否需要担心子目录中存在同名的cookie,或者我可以假设只有我设置的cookie?

如果浏览器不发送路径,您应该在cookie处理程序中将路径设置为“/”


您的服务器设置Cookie,而不是web浏览器,因此,如果您将为同一域创建的Cookie的所有路径设置为“/”,您就不必担心了。

我不确定这对您有多大帮助,但我最近编写了此方法,从URLConnection对象检索Cookie并将其作为字符串返回:

public String getCookies(URLConnection connection) {
    String headerName = null;
    String cookie = "";
    for (int i=1; (headerName = connection.getHeaderFieldKey(i))!=null; i++) {
        if (headerName.equals("Set-Cookie")) {
            if (cookie.equals("")) {
                cookie = connection.getHeaderField(i);
            }
            else {
                cookie = cookie + "; " + connection.getHeaderField(i);
            }
        }
    }
    writeToCookiesFile(cookie);
    return cookie;
}

这个方法只在一个简单的应用程序中使用:)希望它能带来一些好处

只有当url的路径以/foo开头时,浏览器才会发送为路径/foo定义的cookie。如果在/foo和/foo上都设置了具有相同名称的cookie,则无法区分它们。

writeToCookiesFile(cookie);是我编写的另一种方法,它将cookies保存到.txt文件中。如果需要,也可以使用该代码:)