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).
<try to add
registry.addEndpoint("/your-end-point").setAllowedOrigins("*").withSockJS();
"your-end-point" is registered by @SendTo in controller I guess
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
}
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.