Jak*_* C. 9 java https spring websocket web
我目前正在尝试在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();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的前端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
});
});
Run Code Online (Sandbox Code Playgroud)
编辑:这是Chrome控制台中的错误
GET https://localhost:8090/simulation/info 403 (Forbidden)
stomp.js:8 Whoops! Lost connection to undefined
Run Code Online (Sandbox Code Playgroud)
编辑2:此错误似乎是最近从spring boot 1.1升级到spring boot 1.2的副作用.当我确定哪个依赖项导致错误时,我将更新.
Har*_*Cho 19
试试这个:
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/simulation").setAllowedOrigins("*").withSockJS();
}
Run Code Online (Sandbox Code Playgroud)
请注意,允许所有来源的来源可能会施加跨站请求伪造.请参阅https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)以了解防范方法.
| 归档时间: |
|
| 查看次数: |
13294 次 |
| 最近记录: |