我正试图弄清楚特定cookie何时设置,并根据其新值更新某些内容。我正试图通过实现我自己的cookie策略来做到这一点
我的问题涉及HttpCookie.domainMatches方法。
当我使用CookyPolicy.ACCEPT_ORIGINAL_SERVER策略时,它会拒绝几个cookie。
Cookie的域为"主机名"(即machineName123)。这显然是一个无效的域。
我应该在服务器端明确设置域吗?
如果我使用InetAddress获得CanonicalHostName,我只会得到一个IP地址。。。
例如:
CookieHandler.setDefault(new CookieManager(null, new CookiePolicy() {
@Override
public boolean shouldAccept(java.net.URI uri, final java.net.HttpCookie cookie) {
if(CookiePolicy.ACCEPT_ORIGINAL_SERVER.shouldAccept(uri, cookie)) {
//custom code here
}
System.out.println("Accepting cookie uri Host: " + uri.getHost() + " name:" + cookie.getName() + " value: " + cookie.getValue() + " domain: " + cookie.getDomain() + " path: " + cookie.getPath() );
System.out.println("Domain matches uri: " + HttpCookie.domainMatches(cookie.getDomain(), uri.getHost()));
return true;
}
System.out.println("Rejecting cookie uri Host: " + uri.getHost() + " name:" + cookie.getName() + " value: " + cookie.getValue() + " domain: " + cookie.getDomain() + " path: " + cookie.getPath() );
System.out.println("Domain matches uri: " + HttpCookie.domainMatches(cookie.getDomain(), uri.getHost()));
return false;
};
}));
是否有其他方法可以确定何时设置特定cookie?(可能发生在多个连接中),或者有其他方法来解析主机名吗?
谢谢!
如果您希望cookie策略接受所有cookie,则需要使用预定义的cookie策略:
CookiePolicy.ACCEPT_ALL
示例:
CookieManager myCustomCookieManager = new CookieManager(null, CookiePolicy.ACCEPT_ALL);
或
myCustomCookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);