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

Я отправляю запрос на получение одного HTTPS URL и каким-то образом получаю нулевое значение для "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));

}

Выход:

Значения заголовка......{null=[HTTP/1.1 200 OK], x-wily-info=[Очистить guid=0BE0EC9D0A7E67816C471FA946FD2EBB], Дата = [Сб, 29 марта 2014 03:27:41 GMT], Content- Длина =[8106], x-wily-servlet=[*******************], X-FRAME-OPTIONS=[SAMEORIGIN], Соединение = [закрыть], Content-Type=[текст / HTML, кодировка =UTF-8]}

Заголовок Nme: Date
Суббота, 29 марта 2014 03:27:41 GMT
Заголовок Nme: X-FRAME-OPTIONS
SAMEORIGIN
Заголовок Nme: x-wily-info
Очистить направляющую = 0BE0EC9D0A7E67816C471FA946FD2EBB
Заголовок Nme: x-wily-servlet
*****************************
Заголовок Nme: Content-Type
Текст / HTML, кодировка = UTF-8
Заголовок Nme: Content-Length
8106
** Заголовок Nme: Set-Cookie
ноль
Заголовок Nme: Set-Cookie
ноль**
Заголовок Nme: Соединение
близко
Код ответа: 200

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

Соединение закрыто
Контент-длина 8106
Тип содержимого text / html; charset = UTF-8
Дата сб, 29 мар 2014 02:20:31 GMT
Set-Cookie  JSESSIONID=*********************; Path=/****; Безопасный; **HttpOnly** 
Set-Cookie      loginToken=*************; Путь =/****/login/LoginProcess.do; **HttpOnly**; Безопасный
X-FRAME-ВАРИАНТЫ SAMEORIGIN
x-wily-info Clear guid=0BA36F4A0A7E67816C471FA938E304CA
x-wily-servlet  *****************************************

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

4 ответа

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

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

Может быть, на этом URL была переадресация, вы можете попробовать это до того, как получите inputtream:

httpURLConnection.setInstanceFollowRedirects(false);  

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

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

 connection.setRequestProperty("Cookie", myCookie);
Другие вопросы по тегам