HttpsURLConnection getHeaderFields не возвращает set-cookie

Я отправляю запрос на получение одного URL-адреса HTTPS и каким-то образом получаю нулевое значение для «Set-Cookie». При итерации я вижу, что ключ заголовка имеет "set-cookie", но значение заголовка становится нулевым.

Вот мой код:

URL obj = new URL(url);
HttpsURLConnection conn = (HttpsURLConnection) obj.openConnection();
HttpsURLConnection.setFollowRedirects(false);


conn.setRequestProperty("User-Agent", USER_AGENT);
conn.setRequestProperty("Accept",
            "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
conn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
conn.setRequestProperty("Connection", "keep-alive");
conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
conn.connect();

Map em = conn.getHeaderFields();
System.out.println("header Values......" + em.toString());

String headerName = null;   

for (int i = 1; (headerName = conn.getHeaderFieldKey(i)) != null; i++) 
{
     System.out.println("Header Nme : " + headerName);
     System.out.println(conn.getHeaderField(i));

}

Вывод:

header Values......{null=[HTTP/1.1 200 OK], x-wily-info=[Clear guid=0BE0EC9D0A7E67816C471FA946FD2EBB], Date=[Sat, 29 Mar 2014 03:27:41 GMT], Content-Length=[8106], x-wily-servlet=[*******************], X-FRAME-OPTIONS=[SAMEORIGIN], Connection=[close], Content-Type=[text/html;charset=UTF-8]}

Header Nme : Date
Sat, 29 Mar 2014 03:27:41 GMT
Header Nme : X-FRAME-OPTIONS
SAMEORIGIN
Header Nme : x-wily-info
Clear guid=0BE0EC9D0A7E67816C471FA946FD2EBB
Header Nme : x-wily-servlet
*****************************
Header Nme : Content-Type
text/html;charset=UTF-8
Header Nme : Content-Length
8106
**Header Nme : Set-Cookie
null
Header Nme : Set-Cookie
null**
Header Nme : Connection
close
Response Code : 200

Из браузера я вижу ниже:

Connection  close
Content-Length  8106
Content-Type    text/html;charset=UTF-8
Date            Sat, 29 Mar 2014 02:20:31 GMT
Set-Cookie  JSESSIONID=*********************; Path=/****; Secure; **HttpOnly** 
Set-Cookie      loginToken=*************;Path=/****/login/LoginProcess.do; **HttpOnly**;                                                                                                           Secure
X-FRAME-OPTIONS SAMEORIGIN
x-wily-info Clear guid=0BA36F4A0A7E67816C471FA938E304CA
x-wily-servlet  *****************************************

Я пробовал то же самое на многих URL-адресах HTTPS, все они работают нормально, это только создает проблему; основное различие, которое я заметил, заключается в том, что этот сервер фактически отправляет cookie как HttpOnly. Это вызывает проблемы?


person bbajaj    schedule 29.03.2014    source источник


Ответы (4)


Похоже, это особенность из-за проблем с XSS.

https://bugs.openjdk.java.net/browse/JDK-6890023

person Jason Pyeron    schedule 12.02.2016

Возможно, на этот URL-адрес было перенаправление, вы можете попробовать это до получения входного потока:

httpURLConnection.setInstanceFollowRedirects(false);  
person sunzsh    schedule 22.03.2017

Был еще один отчет об ошибке, в котором говорилось, что проблема «HttpUrlConnection Set-Cookie Header lost with WebStart» также затрагивает версии 7u67, 8, 9. https://bugs.openjdk.java.net/browse/JDK-8055829

person YUIOP QWERT    schedule 25.03.2016

создайте свой файл cookie и попробуйте установить свойство, подобное этому. Также перед настройкой посмотрите синтаксис того, как правильный файл cookie выглядит из сети.

 connection.setRequestProperty("Cookie", myCookie);
person vikeng21    schedule 29.03.2014
comment
Я хочу получить файлы cookie, которые сервер отправляет в заголовке ответа Set-Cookie на этом начальном запросе Get для URL-адреса входа, чтобы я мог отправить его обратно на сервер с последующим вызовом post. - person bbajaj; 29.03.2014