WebSocket 握手期间发生错误:意外的响应代码:403。

22

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

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

我看到的唯一区别在于请求头:

能够工作的那个 - Origin:http://192.168.X.XYZ:8080

不能工作的那个 - Origin:chrome-extension://omalebghpgejjiaoknljcfmglgbpocdp

WebSocketConfig 类中所做的操作如下:

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

它仍然无法工作。

请问这个错误的原因是什么,如何修复?

提前致谢。

2个回答

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

11
setAllowedOrigins("*"); 修复了这个问题。谢谢! - M.Bel

1
升级到Spring Boot 2.4后,还需要以下内容:
@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**").allowedOrigins("*");
        }
    };
}

在配置类上添加 @EnableAutoConfiguration

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接