2016-04-01 8 views
0

私はクライアントのアプリケーションです。ウェブサイトは、HTTPS // www.seekingarrangement.com/Iは、クロムまたはFirefoxを使用すると、私は次のことを実行すると、私は"laravel_session=eyJpdiI6InlXNkxTRzUxODRtR3BkT0xIR3ZDd0E9PSIsInZhbHVlIjoiMzlRaDdTSk1IRnNINjAyaWVvaGUrN25DYlJaRDVTNDVoMXBLWkdjaWNCN25Ldzg1UkVZazJ0c1JIVFhxODlMSytaRlk5Skd6Z0EyRG9XK29SUWhtOXc9PSIsIm1hYyI6ImFiNjdiYTczNDE4ZGMyOWViOTcxYTljZmUyNjhjY2ViM2E3N2ViMTBiMzBlYjA4MzgwZjhjOTVhNmVmMGM0OTMifQ%3D%3D; expires=Sat, 02-Apr-2016 04:19:15 GMT; Max-Age=82800; path=/; httponlyJava「Set-Cookie」ヘッダーが読み取られないのはなぜですか?

の値を「するSet-Cookie」のレスポンスヘッダを参照してください

ログインですただし、「Set-Cookie」の値は空です。

private void onLoad() { 
    CookieHandler.setDefault(new CookieManager()); 
    login(); 
} 

private void login() { 
    try { 
     System.out.println("Logging in..."); 
     this.email = emailField.getText(); 
     this.password = passField.getText(); 

     /* 1. connect to login url */ 
     URL URL = new URL("https://www.seekingarrangement.com/login"); 
     HttpURLConnection conn = (HttpURLConnection) URL.openConnection(); 

     /* 2. GET response string */ 
     conn.setRequestMethod("GET"); 

     /* 3. Get Response cookies */ 
     Map cookiesTest = conn.getHeaderFields(); 
     String headerKeys[] = new String[cookiesTest.size()]; 
     String headerValues[] = new String[cookiesTest.size()]; 
     for(int i = 0;i<cookiesTest.size(); i++) { 
      headerKeys[i] = conn.getHeaderFieldKey(i); 
      headerValues[i] = conn.getHeaderField(i); 
      System.out.println(i + ". " + headerKeys[i] + " : " + headerValues[i]); 
     } 

     // more code no relevant to my question 
} 

これは、コンソールTOT次の出力で私の葉:

Logging in... 
0. null : HTTP/1.1 200 OK 
1. Server : cloudflare-nginx 
2. Date : Fri, 01 Apr 2016 05:37:35 GMT 
3. Content-Type : text/html; charset=UTF-8 
4. Transfer-Encoding : chunked 
5. Connection : keep-alive 
6. Set-Cookie : 
7. X-Powered-By : PHP/5.6.14 
8. Cache-Control : no-cache 
9. Set-Cookie : 

あなたが見ることができるように、両方の "のSet-Cookieを" レスポンスヘッダーは空白です。私は、任意のブラウザの開発者向けツールでチェックする場合は、それはあなたのSYSOUT内Set-Cookieヘッダを示すべきである次の行に

CookieHandler.setDefault(new CookieManager()); 

を削除した場合でも、それは「のSet-Cookie」

+0

ユーザーエージェント要求ヘッダーを設定しようとしましたか? – AdamSkywalker

+0

いいえ私はそれを調べます。ありがとうございました。なぜヘッダーが自分で有機的に表示されないのか説明できますか? – dbconfession

答えて

2

の実際の値を示しています。

それともCookieManagerを使用する場合は、以下のようにCookieStoreに保存されたCookieを見ることができるはずです。

CookieManager manager = new CookieManager(); 
CookieHandler.setDefault(manager); 

を、あなたはクッキーの店でクッキーを表示することができます。

if(manager.getCookieStore().getCookies().size() > 0) 
{ 
    System.out.println("From cookieManager : " + manager.getCookieStore().getCookies());  
} 
+0

CookieManager/CookieHandlerは、3つのCookieのみを取得しています。セッションCookieが取得されていません。私がコメントして、クッキーを手作業で取得すると、セッションクッキーがそこにあります。 Cookieマネージャを使用してセッションCookieを取得するにはどうすればよいですか? – dbconfession

+0

CookieManagerはクッキーの "httponly"部分を尊重します。 CookieHandlerを使用しているときにSet-Cookieヘッダーの値が表示されないのはこのためです。 CookieManagerを使用しない場合、 'conn.getHeaderField(" Set-Cookie ")'を使用して値を取得できます。 –

関連する問題