Weblogi c 12.2.1 подавляет Se c -WebSocket-Protocol и любой заголовок ответа - PullRequest
0 голосов
/ 09 мая 2020

Похоже, что 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 я больше не могу!

...