• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Spring + Angular 6 + WebSocket problem z CORS

VPS Starter Arubacloud
0 głosów
751 wizyt
pytanie zadane 23 stycznia 2019 w Java przez Tomek Reda Obywatel (1,110 p.)
zmienione kategorie 24 stycznia 2019 przez Arkadiusz Waluk

Witam. Mam aplikacje Spring bootową + angular 6. Chciałem dodać do niej system powiadomień i zdecydowałem się na webSockety. Jednak mam mały problem przy łączeniu się z nimi z corsami. Zacznijmy od początku.

 

Konfiguruje corsy:

    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfig = new CorsConfiguration().applyPermitDefaultValues();
        corsConfig.addAllowedMethod(HttpMethod.OPTIONS);
        corsConfig.addAllowedMethod(HttpMethod.PUT);
        corsConfig.addAllowedMethod(HttpMethod.DELETE);
        corsConfig.addAllowedMethod(HttpMethod.GET);
        corsConfig.addAllowedMethod(HttpMethod.POST);
        source.registerCorsConfiguration("/**", corsConfig);
        return source;
    }

Konfiguracja webSocketów:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/app");
        config.setApplicationDestinationPrefixes("/");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry
                .addEndpoint("/websockets")
                .setAllowedOrigins("http://localhost:4200")
                .withSockJS();
    }
}

 

Połączenie z socketami w js.

connect() {
    const socket = new SockJS(this.url + 'websockets');

    this.stompClient = Stomp.over(socket);

    const _this = this;
    this.stompClient.connect({}, function (frame) {
      console.log('Connected: ' + frame);
      _this.stompClient.subscribe('/app/notification', function (hello) {
        console.log("connector");
      });
    });

  }

I wyskakuje mi takie coś:

Access to XMLHttpRequest at 'http://localhost:8080/websockets/info?t=1548236547075' from origin 'http://localhost:4200' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
stomp.js:174 Whoops! Lost connection to http://localhost:8080/websockets

 

Link do githuba:

https://github.com/tomaszReda/library

 

komentarz 23 stycznia 2019 przez ScriptyChris Mędrzec (190,190 p.)

W komunikacie błędu masz informację:

The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.

, więc obstawiam, że problemem jest ta linijka kodu:

source.registerCorsConfiguration("/**", corsConfig);

 Powinieneś podać konkretny URL, a nie wildcard'a (gwiazdki).

P.S. Na pewno nie korzystasz z języka C++. Problem leży raczej po stronie Javy, więc zmień proszę kategorię.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 911 wizyt
pytanie zadane 11 grudnia 2018 w Java przez Tomek Reda Obywatel (1,110 p.)
0 głosów
1 odpowiedź 881 wizyt
pytanie zadane 25 października 2018 w Java przez Tomek Reda Obywatel (1,110 p.)
0 głosów
1 odpowiedź 142 wizyt
pytanie zadane 16 kwietnia 2023 w Java przez mm Użytkownik (890 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...