我已使用 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");
}
仍然不工作。
您能告诉我该错误的原因是什么以及如何解决?
提前谢谢。
答案 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。