WebSocket 握手时出错:意外的响应代码: 403

2022-09-02 10:29:40

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

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

我看到的唯一区别是在请求标头中:

在它的工作原理中 - 起源:http://192.168.X.XYZ:8080

在其中,它不起作用 - 起源:铬 extension://omalebghpgejjiaoknljcfmglgbpocdp

我在WebSocketConfig类中所做的如下:

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

并且仍然不起作用

您能否告知该错误的原因是什么以及如何解决它?

提前感谢您。


答案 1

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


答案 2

在更新到 Spring boot 2.4 时,它还需要:

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

和配置类。@EnableAutoConfiguration