春季的“ Sec-WebSocket-Accept”值不正确

时间:2018-11-14 13:38:37

标签: spring spring-boot websocket dart angular-dart

从我的前端连接到WebSocket时(使用Stomp for 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

0 个答案:

没有答案