2016-06-22 2 views
2

以下は、Androidアプリケーションで認証後のCookieを取得するためのコードです。私はhostの代わりurlを使用する場合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のいずれかを使用すると、同じ値が返されます。なぜこれが起こっているのでしょうか?

以前はホストOR URLに対して同じ値を返していましたが、この1つのサーバーは私がコードのコメントで述べた値を返しています。

答えて

1

変数ごとに返される内容がわからなくても、さまざまな結果を引き起こす正確な問題を特定することは困難です。

Cookieに違いがある場合は、cookiesHostcookiesURLの値を指定してください。

あなたはexample.com(HOST)を使用する場合は、あなたの問題への最初の応答で述べたように、セッションとクッキーがexample.comのために作成されたが、その後、最も可能性の高いBASEURL www.example.comへのリダイレクトは、新しいセッションを作成します。

1

getHost()はドメイン名のみを返します。例えば、http://google.com/searchのうちgoogle.comがあります。私はあなたのgetUrl()メソッドがURL全体を返すと推測しています。

これは、CookieManagerインスタンスに異なる入力を与え、異なる出力をもたらします。

+0

getUrlはURLオブジェクトを返します。しかし、いくつかのサーバーでは違う入力ですが、そうではありません。ほとんどのサーバーでホストを使用している場合は、すべてのCookieを取得します。突然私はホストのすべてのクッキーを返さなかったサーバーを見つけましたが、ホストをURLに変更し、getCookieがすべてのクッキーを返さないようにしました。 – yogsma

関連する問題