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

Error during WebSocket handshake: Unexpected response code: 403

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

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

我看到的唯一区别是请求 headers:

在有效的那一个 - 来源:http://192.168.X.XYZ:8080

其中一个不起作用 - Origin:chrome-extension://omalebghpgejjiaoknljcfmglgbpocdp

我在 WebSocketConfig class 中所做的如下:

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

并且仍然工作。

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

提前致谢。

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

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

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

@EnableAutoConfiguration 配置 class.