java - 通过 HTTPS 403 禁止的 Websocket

标签 java spring web https websocket

我目前正在尝试在我的 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 的副作用。当我查明是哪个依赖项导致错误时,我会进行更新。

最佳答案

试试这个:

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

请注意,允许所有来源的来源可能会造成跨站请求伪造。引用https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)寻找防御方法。

关于java - 通过 HTTPS 403 禁止的 Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677418/

相关文章:

javascript - 如何使用 JavaScript 包含 PHP 文件并传递参数

javascript - 在网站的一次导航中仅显示一次弹出窗口

java - 如何在使用 GraphStream(或其他库)扩展 JPanel 的自定义 java swing 组件上绘制节点和边?

java - EditText 值在子 ExpandableListView 中重复

java - Spring MVC 编码非英文参数

java - 我应该使用什么设计模式?使用 Spring 框架

mysql - 带数据库 ID 的 Htaccess 重定向 url

java - 软件可以将数据转换为声音吗,麦克风是否可以收听该声音将其转换为相同数据

java - 访问 neo4j-ogm 的映射上下文

spring - 你如何在一个类中使用另一个类的bean?