我目前正在尝试在我的Spring Boot 1.2应用程序中设置HTTPS。该应用程序使用大量的Websockets在两个服务器之间进行通信。当它在简单的HTTP上运行时,一切都正常,但是当我将其切换到HTTPS时,在Firefox和Chrome上都会收到403 Forbidden错误(还没有在IE上测试)。我有一个SimpleCORSFilter设置,接受所有连接,所以我不认为那是问题所在。所有发送到同一服务器的HTTPS RESTful请求都可以正常工作,只有Websockets似乎被阻止了。
这是我的WebSocket Spring配置
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends
AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/simulation").withSockJS();
}
}
这里是我的前端 WebSocket 连接
socket = new SockJS(https://my.url + '/simulation');
stompClient = Stomp.over(socket);
stompClient.debug = false;
stompClient.connect({}, function(frame) {
stompClient.subscribe('/topic/', function(status){
// Do something with result
});
});
编辑:这是Chrome控制台中的错误
GET https://localhost:8090/simulation/info 403 (Forbidden)
stomp.js:8 Whoops! Lost connection to undefined
编辑2:这个错误似乎是最近从spring boot 1.1升级到spring boot 1.2的副作用。当我确定是哪个依赖项导致了错误时,我会更新的。