Похоже, что Weblogi c подавляет некоторые заголовки во время рукопожатия веб-сокета, в частности Sec-WebSocket-Protocol
, что приводит к сбою моего запроса STOMP в Google Chrome из-за ошибки:
Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received
Интересно достаточно, кажется, приложение в порядке, на самом деле я добавил следующее настраиваемое рукопожатие:
public class MyDefaultHandshake extends DefaultHandshakeHandler {
@Override
protected String selectProtocol(List<String> requestedProtocols, WebSocketHandler webSocketHandler) {
String selected = super.selectProtocol(requestedProtocols, webSocketHandler);
log.debug("Selected [{}] as ws protocol", selected); //just for the sake of logging
return selected;
}
}
По приведенному выше коду я ожидал бы пустую строку, но правильно получаю:
.bmrey c .MyDefaultHandshake | Выбран [v10.stomp] как протокол WS
протокол .s.web.servlet.DispatcherServlet | Выполнено 101 SWITCHING_PROTOCOLS
Так что внутри все нормально, но в итоге получаются только эти заголовки:
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Date: Sat, 09 May 2020 00:27:32 GMT
Transfer-Encoding: chunked
Sec-WebSocket-Accept: 6PJWbiej9AnUuq1rk0cQYlfmP2o=
Upgrade: websocket
X-ORACLE-DMS-RID: 0
X-ORACLE-DMS-ECID: 9487cc2c-8a0e-41d7-a14b-1ae71d772682-00000a4d
Как так?
редактировать.
Кажется, что каждый заголовок ответа подавляется! Я попытался просто принудительно применить заголовок:
httpServletResponse.setHeader("foo","bar");
, если я попытаюсь вызвать локальную весеннюю загрузку, я смогу его увидеть, а после развертывания его как войны с удаленными веб-журналами c я больше не могу!