Неверное значение Spring 'Sec-WebSocket-Accept' - PullRequest
0 голосов
/ 14 ноября 2018

При подключении к WebSocket из моего интерфейса (используя Stomp для Dart):

client = await connect(uri);

Клиент отправляет этот ключ в заголовке:

Sec-WebSocket-Key: ydWCNEacB1ZqiHCH1Ip+vo4mhOw=

И получает ключ обратноиз Spring WebSocket:

Sec-WebSocket-Accept: KVqExHty0Y5/fze11/EAhg==

Это приводит к тому, что клиент выбрасывает:

Соединение WebSocket с 'ws: // user: pass @ localhost: 8080 / ws' не удалось:Ошибка во время рукопожатия WebSocket: неверное значение заголовка Sec-WebSocket-Accept

Я не знаю, как рассчитать правильный ответ.Но в любом случае клиент по какой-то причине не принимает его.

Как мне решить эту проблему?Что может быть причиной проблемы и как я могу ее решить?

Спасибо


Редактировать: добавлена ​​конфигурация websocket:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {


@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.setApplicationDestinationPrefixes("/app").enableSimpleBroker("/topic");
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/ws").setAllowedOrigins("*");
    registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
    }
}

Также

@Configuration
public class WebSocketSecurityConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {

@Override
protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) {
    messages.anyMessage().authenticated();
    }
}

Редактировать: я нашел вики, которая описывает, как рассчитать Sec-WebSocket-Key.Следуя приведенному ниже руководству, похоже, ключ неверный.Это не кажется вероятным, хотя или многие другие будут иметь проблемы.https://en.wikipedia.org/wiki/WebSocket

...