WebSocket握手期间出错:意外响应代码:403

时间:2016-09-21 21:41:29

标签: java spring websocket cors spring-websocket

我已使用 Spring Boot Application 实施了 WebSockets ,并在尝试使用Chrome扩展程序测试ws连接时出现以下错误消息' Smart websocket客户端'。 但是,在本地运行Spring Boot应用程序时没有问题。

WebSocket connection to 'ws://192.168.X.XYZ:8080/test' failed: 
Error during WebSocket handshake: Unexpected response code: 403

我看到的唯一区别在于Request标题:

在它工作的那个 - 起源:http://192.168.X.XYZ:8080

在一个它不起作用 - 原产地:chrome-extension:// omalebghpgejjiaoknljcfmglgbpocdp

我在 WebSocketConfig 课程中所做的工作如下:

@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(myHandler(), "/test").setAllowedOrigins("http://192.168.X.XYZ:8080");
}

仍然工作。

您能告诉我该错误的原因是什么以及如何解决?

提前谢谢。

2 个答案:

答案 0 :(得分:8)

您需要将"chrome-extension://..."来源配置为允许来源,甚至是"*",否则服务器会将其拒绝。

答案 1 :(得分:0)

更新到 spring boot 2.4 时,还需要:

 @Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**").allowedOrigins("*");
        }
    };
}

和配置类上的@EnableAutoConfiguration。