2016-06-22 3 views
2

아래 코드는 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

각 변수에 대해 반환되는 내용을 모른 채로 다양한 결과를 초래하는 정확한 문제를 판별하는 것은 어렵습니다.

쿠키의 차이가 나타날 때 cookiesHostcookiesURL의 값을 제공하십시오.

당신이 example.com (HOST)를 사용하는 경우 문제에 대한 첫 번째 응답에서 언급 한 바와 같이

는 세션과 쿠키는 base을 www.example.com에 리디렉션 새로운 세션을 생성 가능성이 가장 높은 다음, example.com 생성됩니다.

1

getHost()은 도메인 이름 만 반환합니다. 예를 들어 google.comhttp://google.com/search입니다. 귀하의 getUrl() 메서드가 전체 URL을 반환한다고 생각합니다.

이렇게하면 CookieManager 인스턴스의 입력이 달라지며 출력이 달라집니다.

+0

getUrl은 URL 객체를 반환합니다. 하지만 다른 입력이지만, 일부 서버에서는 그렇지 않습니다. 호스트를 사용하는 경우 대부분의 서버에서 모든 쿠키를 얻습니다. 갑자기 호스트에 대한 모든 쿠키를 반환하지 않는 서버를 발견했지만 호스트를 URL로 변경했지만 getCookie가 모든 쿠키를 반환하지 않았습니다. – yogsma

관련 문제