Пружинная веб-розетка с VueJs - заблокирована CORS - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь найти решение о том, как подключить VueJs и Spring через WebSocket.

Config WebSocket (Spring)

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/gs-guide-websocket")
                .setAllowedOrigins("http://localhost:8080")
                .withSockJS();
    }

У меня есть попробовал несколько вариантов с .setAllowedOrigins(""), например "*", "http://localhost: 8080 " или не использовал его.

У меня также есть CORS conf в моем проекте.

    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("http://localhost:8080"));
        configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
        configuration.setAllowedHeaders(Arrays.asList("authorization", "content-type", "x-auth-token"));
        configuration.setExposedHeaders(Arrays.asList("x-auth-token"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

В моем CORS conf я перепробовал много вариантов, но безрезультатно: (

И последнее - это соединение на стороне клиента (VueJs):

connect() {
      this.socket = new SockJS("http://localhost:8081/gs-guide-websocket");
      this.stompClient = Stomp.over(this.socket);
      this.stompClient.connect(
        {},
        frame => {
          this.connected = true;
          console.log(frame);
          this.stompClient.subscribe("/topic/chat/1", tick => {
            console.log(tick);
            this.received_messages.push(JSON.parse(tick.body).content);
          });
        },
        error => {
          console.log(error);
          this.connected = false;
        }
      );
    }

И на всем, что я пробовал, я получаю эту ошибку:

Доступ к XMLHttpRequest в 'http://localhost: 8081 / gs-guide-websocket / info? t = 1583167396687 'from origin' http://localhost: 8080 'заблокировано политикой CORS: значение заголовка' Access-Control-Allow-Credentials 'в ответе равно '', который должен иметь значение 'true', когда режим учетных данных запроса - 'include'. Режим учетных данных запросов, инициированных XMLHttpRequest, контролируется атрибутом withCredentials.

* 103 4 *

Есть ли какое-нибудь решение, которое я могу использовать, чтобы оно работало?

К вашему сведению:

  • Пружина: localhost:8081
  • VueJs: localhost:8080

Спасибо за помощь всем:)

1 Ответ

0 голосов
/ 02 марта 2020

Я был так близко. Все здесь правильно (не для производства, конечно).

Последнее, чего не хватало в конфигурации CORS, было установить Allow credentials на true.

Я надеюсь, что этот пост будет помочь вам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...