2017-06-20 58 views
0

我試圖得到一個sessionid的cookie,你會檢查網頁時的cookie。例如,在Chrome右鍵單擊頁面>檢查>網絡>(按F5刷新)獲得來自請求頭中的Java

我試圖使用URLConnection的圖書館,像這樣:

URLConnection connection = new URL("http://website.com/link/to/some_wsdl?wsdl").openConnection(); 

connection的字段如下:

請求:

keys: 
0 = "GET /link/to/some_wsdl?wsdl HTTP/1.1" 
1 = "User-Agent" 
2 = "Host" 
3 = "Accept" 
4 = "Connection" 
values: 
1 = "Java/1.8.0_131" 
2 = "iccdev.ejgallo.com" 
3 = "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2" 
4 = "keep-alive" 

響應:

keys: 
1 = "Date" 
2 = "Server" 
3 = "X-Powered-By" 
4 = "Keep-Alive" 
5 = "Connection" 
6 = "Transfer-Encoding" 
7 = "Content-Type" 
8 = "Content-Language" 
values: 
0 = "HTTP/1.1 200 OK" 
1 = "Tue, 20 Jun 2017 00:35:53 GMT" 
2 = "Oracle-Application-Server-11g" 
3 = "Servlet/2.5 JSP/2.1" 
4 = "timeout=5, max=100" 
5 = "Keep-Alive" 
6 = "chunked" 
7 = "text/xml; charset=utf-8" 
8 = "en" 

的問題是,我失去了一個會話ID的條目,應在請求頭帶有前綴distsite=SESSIONID=


編輯:這已經有一段時間,因爲我問過這個問題,但我會離開無論如何,如果別人有類似的問題。

從本質上講,我一直在尋找的cookie是一個由我們的LDAP的定製實現內部使用,並且只能由具有創建認證LDAP說執行。該cookie用於SSO(單點登錄),因此可以通過瀏覽器通過標準協議輕鬆獲取。由於我使用Java在沒有正確認證的情況下獲得它,因此我不會將cookie返回到我們對LDAP API的調用中的響應中。

回答

0

該Cookie JSESSIONID下鍵,所以檢索這樣

String sessionId = connection.getHeaderField("JSESSIONID");

+0

'connection.getHeaderField( 「JSESSIONID」)''返回null'。我上面提供的字段是這種方法似乎存在的唯一字段。你知道爲什麼它不可見,除非我用像檢查或提琴手這樣的東西來看它嗎?服務器是否必須使用sessionid進行響應並以某種方式將其注入到請求標頭中? –

+1

如果客戶端沒有發送cookie頭,那麼你不能在服務器端檢索它,我假設服務器後端是Java,在這種情況下,Cookie頭被鍵入「JSESSIONID」下(存儲頭字段的名稱cookie值),只需將'connection.getHeaderField(「JSESSIONID」)'替換爲存儲您的情況的cookie值的標題字段的名稱 – Dummy