2016-06-22 4 views
2

Ниже приведен мой код, чтобы получить аутентификацию cookie в приложении для Android.CookieManager.getCookie() возвращает разные значения

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 ранее, но этот один сервер, с которым я работаю, возвращает значения, упомянутые в комментариях кода.

ответ

1

Трудно определить точный вопрос, вызывающий разнообразные результаты, не зная, что возвращается для каждой переменной.

Просьба указать значения cookiesHost и cookiesURL, когда вы видите разницу в файлах cookie.

Как уже упоминалось в первом ответе на ваш вопрос, если вы используете example.com (HOST), сеанс и печенье создан для example.com, то, скорее всего, редирект на BaseUrl www.example.com создает новую сессию.

1

getHost() возвращает только доменное имя. Например, google.com из http://google.com/search. Я предполагаю, что ваш метод getUrl() возвращает весь URL.

Это дает экземпляры CookieManager различных входов, что приводит к разным выходам.

+0

getUrl возвращает объект URL. Но другой ввод, но это не относится к некоторым серверам. Для большинства серверов, если вы используете хост, я получаю все файлы cookie. Внезапно я наткнулся на сервер, который не возвращал все файлы cookie для хоста, но я изменил хост на url, а не getCookie возвращает все файлы cookie. – yogsma

Смежные вопросы