【问题标题】:CookieManager.getCookie() returns different valuesCookieManager.getCookie() 返回不同的值
【发布时间】:2016-07-06 21:54:12
【问题描述】:

下面是我在 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. 

所以如果我使用host 而不是urlcookieMgr.getCookie() 会为某些服务器返回不同的值。这是为什么?对于某些服务器,如果我使用hosturl,它会返回相同的值。为什么会发生这种情况?

这之前为主机或 url 返回相同的值,但我正在使用的这台服务器正在返回我在代码 cmets 中提到的值。

【问题讨论】:

    标签: java android cookies


    【解决方案1】:

    在不知道每个变量返回什么的情况下,很难确定导致不同结果的确切问题。

    当您看到 cookie 的差异时,请提供 cookiesHostcookiesURL 的值。

    如对问题的第一个回复中所述,如果您使用 example.com (HOST),则会为 example.com 创建一个会话和一个 cookie,然后很可能重定向到 BaseURL www.example.com 会创建一个新会话。

    【讨论】:

      【解决方案2】:

      getHost() 只返回域名。例如,google.com 来自 http://google.com/search。我猜你的 getUrl() 方法会返回整个 URL。

      这会给CookieManager 实例提供不同的输入,从而产生不同的输出。

      【讨论】:

      • getUrl 返回一个 URL 对象。但是输入不同,但某些服务器并非如此。对于大多数服务器,如果使用主机,我会得到所有 cookie。突然,我遇到了一个服务器,它没有返回主机的所有 cookie,但是我将主机更改为 url 而不是 getCookie 正在返回所有 cookie。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      • 2014-03-29
      • 2018-02-19
      • 2020-02-19
      • 1970-01-01
      • 2017-11-01
      相关资源
      最近更新 更多