java.net.ProtocolException: заголовок Bad Set-Cookie

Блок кода для справки приведен ниже:

String hostname = "Hostname Value";
URI uri = new URI(hostname + "/solr/add/story/" + story.getId() + ".html");
final HTTPConnection con = new HTTPConnection(uri);
con.setAllowUserInteraction(false);
final HTTPResponse response = con.Get(uri.getPathAndQuery());

Здесь, при доступе к ответу, я получаю исключение ниже:

[ WARN] [com.thestreet.cms.integration.solr.SolrService] 12/02/2013 22:52:54-Unable                       
update front end search engine index with story 10446446 
java.net.ProtocolException: Bad Set-Cookie header: FV=OID-|PID-|MID-|PUC-|DATE-         
529D5595; path=/; expires=Tue, 01-Jan-2035 00:00:00 GMT; domain=.thestreet.com;,       
BRIS=C0.A8.41.91|529D55951FB74EF; path=/; expires=Tue, 01-Jan-2035 00:00:00 GMT;     
domain=.thestreet.com;, 
RGIS=-1386042773,192.168.65.145,BA42A8C0,1076F795713A21E010941898-    0-1386042773-; 
path=/; expires=Tue, 01-Jan-2035 00:00:00 GMT; domain=.thestreet.com;,     
JSESSIONID=8A8A377CF937F6184D3F4774CC6F4CBA; Version=1; Path="/"; HttpOnly 
No '=' found for token starting at position 432 
at HTTPClient.Cookie.parse(Cookie.java:243) 
at HTTPClient.CookieModule.handleCookie(CookieModule.java:454) 
at HTTPClient.CookieModule.responsePhase1Handler(CookieModule.java:403) 
at HTTPClient.HTTPResponse.handleResponse(HTTPResponse.java:724) 
at HTTPClient.HTTPResponse.getStatusCode(HTTPResponse.java:190) 
at com.thestreet.cms.integration.solr.SolrService$1.run(SolrService.java:450) 
at java.lang.Thread.run(Thread.java:722)

Похоже, это вызвано битом Httponly в заголовке файла cookie, поскольку он не имеет форму пары ключ-значение. Есть ли способ избежать проверки заголовка файла cookie или проверки файла cookie при чтении ответа? Пожалуйста помоги.

Заранее спасибо.


person Vivek    schedule 20.12.2013    source источник
comment
Может ли кто-нибудь помочь мне в этом .. ???   -  person Vivek    schedule 11.03.2014


Ответы (1)


Проблема в том, что ваш http-запрос/ответ содержит HttpOnly в заголовке. Похоже, что это значение больше не поддерживается серверами приложений. Чтобы исправить это, я написал обходной путь, при котором HttpOnly удаляется из ответа на стороне сервера.

String header = resp.getHeader("Set-Cookie");
if (header != null && header.endsWith("HttpOnly")) {
    resp.setHeader("Set-Cookie", header.substring(0, header.length() - 8));
}

Но лучшее решение — удалить HttpOnly из заголовка на стороне http-клиента.

person Sidharth    schedule 15.09.2020