【问题标题】:Error during WebSocket handshake: Unexpected response code: 403WebSocket 握手期间出错:意外的响应代码:403
【发布时间】:2017-01-30 07:43:15
【问题描述】:

我已经使用 Spring Boot Application 实现了 WebSockets,并在尝试使用 chrome 扩展“Smart websocket client'。 但是,我在本地运行 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

在其中一个不起作用 - 来源:chrome-extension://omalebghpgejjiaoknljcfmglgbpocdp

我在 WebSocketConfig 类中所做的如下:

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

并且仍然工作。

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

提前谢谢你。

【问题讨论】:

    标签: java spring websocket cors spring-websocket


    【解决方案1】:

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

    【讨论】:

    • setAllowedOrigins("*");解决了这个问题。谢谢!
    【解决方案2】:

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

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

    和配置类上的@EnableAutoConfiguration。

    【讨论】:

      猜你喜欢
      • 2018-06-04
      • 2014-09-30
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2018-01-21
      • 2019-01-19
      • 2016-02-02
      • 2019-11-26
      相关资源
      最近更新 更多