当我在java servlet中检索cookie时,getPath()的所有值都为null。
因此,如果在目录/ foo和根目录中设置了具有相同名称的cookie,我将检索两个具有相同名称的cookie,但我无法区分它们,因为getPath()为两者都返回null。
我看着萤火虫,看到火狐没有为此路径发送任何东西。
我的应用程序使用“rememberme”cookie,路径设置为“/”。只要只有一个名为rememberme的cookie,一切正常。但是如果在某个不同的路径上使用相同的名称设置了另一个cookie,例如/ foo,那么我的应用程序将不知道哪一个是我为根设置的那个。
如何区分Cookie?我是否需要担心在子目录中存在同名的cookie,或者我可以假设只有我设置的那个?
答案 0 :(得分:2)
如果浏览器没有发送路径,则应在Cookie处理程序中将路径设置为“/”。
您的服务器设置的是Cookie,而不是网络浏览器,因此,如果您为同一个域设置了为“/”设置的Cookie的所有路径,则无需担心。
答案 1 :(得分:0)
我不确定这对你有多大帮助,但我最近编写了这个方法来从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;
}
此方法仅用于普通应用程序:)希望它有一些好处!
答案 2 :(得分:0)
只有当url的路径以/ foo开头时,浏览器才会发送为path / foo定义的cookie。如果在/和/ foo上都设置了同名的cookie,则无法区分它们。