spring websocket status:400 websocket connect keep-alive

Имам проблем със свързването към изпълнение на spring websocket.

След отстраняване на грешки в кода откривам, че заглавката на заявката „Връзка“ има две стойности, „keep-alive“ и „Upgrade“ от моя прост код на JavaScript.

Изходът на fiddler на заявката е: -

GET http://localhost:8282/play/stream HTTP/1.1
Host: localhost:8282
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Authorization: Basic bXNhZG1pbjptc2FkbWlu
Upgrade: websocket
Connection: Upgrade
Origin: http://localhost:8282
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: JSESSIONID=8C8748DD08104EAD51296E4A9E846604
Sec-WebSocket-Key: 9edBIn/q4i5pyQOFf72SMA==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

... DefaultHandshakeHandler извиква HttpHeaders.getConnection(), който връща ПЪРВАТА стойност като „keep-alive“. Това се сравнява с „Надстройка“ и „надграждане“ и се проваля.

Какъв е проблемът тук? Позволен ли е хедърът за поддържане на активност в тази ситуация и ако е така, логиката неправилна ли е?

Използвам spring-websockets/spring-web 4.0.8.RELEASE

наздраве


person CobraFlow    schedule 16.11.2014    source източник


Отговори (1)


Заявката е технически правилна, тъй като HTTP 1.1 приема множество полета с едно и също име на поле (RFC2616 раздел 4.2). Въпреки това, HttpHeaders ще приеме само първата стойност, това е причината. Премахнете първата заглавка Връзка или ги пренаредете така, че да бъде избрано Връзка: Надстройка.

person Sergi Almar    schedule 17.11.2014
comment
Благодаря за разяснението! Това трябва да е грешка в spring-websockets, тъй като не очаква заглавката за поддържане на активност и приема само първата стойност. - person CobraFlow; 02.12.2014