Websocket in Spring Boot app - Getting 403 Forbidden

后端 未结 3 860
长发绾君心
长发绾君心 2021-02-02 09:26

Websocket in Spring Boot app - Getting 403 Forbidden

I can connect to the websocket from client using sockjs/stompjs when I run this in eclipse (no spring boot).

<
相关标签:
3条回答
  • 2021-02-02 09:52

    try to add

    registry.addEndpoint("/your-end-point").setAllowedOrigins("*").withSockJS();
    

    "your-end-point" is registered by @SendTo in controller I guess

    0 讨论(0)
  • 2021-02-02 10:05

    I had a similar issue and fixed it in the WebSocketConfig by setting the allowed origins to "*".

    @Configuration
    @EnableWebSocketMessageBroker
    public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    
        @Override
        public void registerStompEndpoints(StompEndpointRegistry registry) {
            // the endpoint for websocket connections
            registry.addEndpoint("/stomp").setAllowedOrigins("*").withSockJS();
        }
    
        // remaining config not shown as not relevant
    }
    
    0 讨论(0)
  • 2021-02-02 10:13

    Difference between my 2 environment was the version of jars.

    spring-boot-starter-websocket-1.2.5.RELEASE.jar
    spring-websocket-4.1.7.RELEASE.jar
    

    Because of the spring-boot-starter-websocket dependency while packaging it was picking up spring-websocket-4.1.7.RELEASE inspite of the spring_version being spring_version=4.0.6.RELEASE.

    Modified the dependency in build.gradle that fixed the problem.

    compile "org.springframework.boot:spring-boot-starter-websocket:1.1.0.RELEASE"
    

    I think in latest version of spring-websocket jar the class StompWebSocketEndpointRegistration has setAllowedOrigins method that has to be used.Have not tried this.

    But CORS filter with

    response.setHeader("Access-Control-Allow-Origin", "http://localhost:8089");
    

    is working with older version.

    0 讨论(0)
提交回复
热议问题