• 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
791 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 961 wizyt
pytanie zadane 11 grudnia 2018 w Java przez Tomek Reda Obywatel (1,110 p.)
0 głosów
1 odpowiedź 1,043 wizyt
pytanie zadane 25 października 2018 w Java przez Tomek Reda Obywatel (1,110 p.)
0 głosów
1 odpowiedź 175 wizyt
pytanie zadane 16 kwietnia 2023 w Java przez mm Użytkownik (890 p.)

93,028 zapytań

141,991 odpowiedzi

321,294 komentarzy

62,375 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...