2016-04-01 15 views
0

Bir müşteri için başvuruda çalışıyorum. Web sitesi Ben Chrome veya Firefox kullandığınızdaJava Neden "Set-Cookie" başlıkları okunmuyor?

, görüyorum https // www.seekingarrangement.com/giriş işlemiyle ı çalıştırdığınızda "laravel_session=eyJpdiI6InlXNkxTRzUxODRtR3BkT0xIR3ZDd0E9PSIsInZhbHVlIjoiMzlRaDdTSk1IRnNINjAyaWVvaGUrN25DYlJaRDVTNDVoMXBLWkdjaWNCN25Ldzg1UkVZazJ0c1JIVFhxODlMSytaRlk5Skd6Z0EyRG9XK29SUWhtOXc9PSIsIm1hYyI6ImFiNjdiYTczNDE4ZGMyOWViOTcxYTljZmUyNjhjY2ViM2E3N2ViMTBiMzBlYjA4MzgwZjhjOTVhNmVmMGM0OTMifQ%3D%3D; expires=Sat, 02-Apr-2016 04:19:15 GMT; Max-Age=82800; path=/; httponly

değeriyle "-Cookie ayarla" Aşağıdakiler için bir yanıt başlığı Ancak kod, "Set-Cookie" değerleri boştur.

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 
} 

Bu konsolun tot aşağıdaki çıkışı ile beni bırakır: Gördüğünüz gibi

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 : 

, hem "Set-Cookie" yanıt başlıkları boş. Ben herhangi bir tarayıcının geliştirici araçları ile kontrol Eğer bu sizin sysout içinde Set-Cookie başlığını göstermelidir aşağıdaki satırı

CookieHandler.setDefault(new CookieManager()); 

kaldırırsanız Ama, "Cookie"

+0

Kullanıcı aracı isteği üstbilgisini ayarlamayı denediniz mi? – AdamSkywalker

+0

Hayır Buna bakacağım. Teşekkür ederim. Başlıkların neden kendi başlarına organik olarak gösterilmediğini açıklayabilir misiniz? – dbconfession

cevap

2

için gerçek değerleri göstermektedir.

Yoksa CookieManager kullanırsanız, aşağıda CookieStore saklanan çerezleri görmek mümkün olmalıdır:

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

ve çerez deposunda çerezleri görüntüleyebilirsiniz:

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

CookieManager/CookieHandler sadece 3 çerez toplar. Oturum çerezi alınmıyor. Onlara yorum yaptığımda ve sadece elle kurabiyeleri aldığımda kurabiye kuralı var. Oturum çerezini almak için çerez yöneticisini nasıl kullanabilirim? – dbconfession

+0

CookieManager, çerezin "httponly" bölümünü onurlandırır; Bu nedenle, CookieHandler'ı kullanırken Set-Cookie başlığının değerini göremezsiniz. CookieManager'ı kullanmazsanız, değeri almak için 'conn.getHeaderField (" Set-Cookie ")' yi kullanabilirsiniz. –