以下是我在Android应用程序中获取一些cookie后验证的代码。
String url = "https://host:port/sso/SSOServlet";
BasicCookieStore cookieJar = new BasicCookieStore();
CookieManager cookieMgr = CookieManager.getInstance();
String host = null;
URL urlObj = Util.getUrl(url);
host = urlObj.getHost();
String cookiesHost = cookieMgr.getCookie(host); // value for cookiesHost is JSESSIONID
String cookiesURL = cookieMgr.getCookie(url); // value for cookiesURL is JSESSIONID and a custom Session id for application.
如果我使用cookieMgr.getCookie()
而不是host
,url
会为某个服务器返回不同的值。这是为什么?对于某些服务器,如果我使用host
或url
,则会返回相同的值。为什么会发生这种情况?
这之前为主机OR url返回了相同的值,但是我正在使用的这个服务器正在返回我在代码注释中提到的值。
答案 0 :(得分:1)
getHost()
只返回域名。例如,google.com
中的http://google.com/search
。我猜你的getUrl()
方法会返回整个网址。
这为CookieManager
实例提供了不同的输入,从而产生不同的输出。
答案 1 :(得分:1)
如果不知道每个变量的返回结果,很难确定导致变化结果的确切问题。
当您看到Cookie中的差异时,请提供cookiesHost
和cookiesURL
的值。
正如您使用example.com
(HOST)时对问题的第一个回复中提到的,会为example.com
创建会话和Cookie,然后很可能会重定向到BaseURL {{1}创建一个新会话。